{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "baae3316",
   "metadata": {
    "ExecuteTime": {
     "start_time": "2022-04-27T08:36:58.638Z"
    }
   },
   "outputs": [],
   "source": [
    "# 原始链接： https://www.kaggle.com/code/abhayparashar31/titanic-complete-analysis-prediction/notebook#Model-Training"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5f25277a-a6d0-4c03-a3bd-40a00af45a56",
   "metadata": {},
   "source": [
    "# 数据准备"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "14cf5417",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T06:10:36.858229Z",
     "start_time": "2022-04-27T06:10:26.277515Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "08a69c36-b7f1-4a62-93f7-21a631ebb8c7",
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8aa043a0",
   "metadata": {},
   "source": [
    "## 加载数据集"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "be8fa395-7994-4a5d-9e92-6d951effb958",
   "metadata": {},
   "source": [
    "在机器学习中，数据集是指用于训练、验证和测试机器学习模型的数据的集合。数据集通常包含两个部分：特征（输入数据）和标签（输出数据）。下面我会详细介绍机器学习中常见的几种数据集：  \n",
    "\n",
    "**训练数据集（Training Dataset）：**  \n",
    "训练数据集是用于训练机器学习模型的数据集。  \n",
    "包含了特征和对应的标签。  \n",
    "模型通过学习训练数据集中的模式、关系和规律来进行训练。  \n",
    "**测试数据集（Test Dataset）：**  \n",
    "测试数据集用于最终评估模型的性能和泛化能力。  \n",
    "保持未见过的数据，用于评估模型在真实世界数据上的表现。  \n",
    "在模型训练和超参数调优完成后，使用测试数据集进行最终性能评估。  \n",
    "**无标签数据集（Unlabeled Dataset）：**  \n",
    "无标签数据集只包含特征信息，缺少对应的标签信息。  \n",
    "\n",
    "还会涉及到验证集\n",
    "**验证数据集（Validation Dataset）：**  \n",
    "验证数据集用于评估模型的性能和调优超参数。  \n",
    "通常从训练数据集中分出一部分作为验证数据集。  \n",
    "模型在验证数据集上进行评估，以便及时发现模型是否出现过拟合或欠拟合，并选择最佳的超参数设置。  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "f65d839d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T06:16:05.279978Z",
     "start_time": "2022-04-27T06:16:05.228241Z"
    }
   },
   "outputs": [],
   "source": [
    "df_labeled = pd.read_csv ('DataSet/LabeledData.csv')\n",
    "df_unLabeled = pd.read_csv('DataSet/UnlabeledData.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "8c869ec9",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T06:16:31.809787Z",
     "start_time": "2022-04-27T06:16:31.687167Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3      0            113803  53.1000  C123        S  \n",
       "4      0            373450   8.0500   NaN        S  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_labeled.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "e36ae512",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>892</td>\n",
       "      <td>3</td>\n",
       "      <td>Kelly, Mr. James</td>\n",
       "      <td>male</td>\n",
       "      <td>34.5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>330911</td>\n",
       "      <td>7.8292</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>893</td>\n",
       "      <td>3</td>\n",
       "      <td>Wilkes, Mrs. James (Ellen Needs)</td>\n",
       "      <td>female</td>\n",
       "      <td>47.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>363272</td>\n",
       "      <td>7.0000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>894</td>\n",
       "      <td>2</td>\n",
       "      <td>Myles, Mr. Thomas Francis</td>\n",
       "      <td>male</td>\n",
       "      <td>62.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>240276</td>\n",
       "      <td>9.6875</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>895</td>\n",
       "      <td>3</td>\n",
       "      <td>Wirz, Mr. Albert</td>\n",
       "      <td>male</td>\n",
       "      <td>27.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>315154</td>\n",
       "      <td>8.6625</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>896</td>\n",
       "      <td>3</td>\n",
       "      <td>Hirvonen, Mrs. Alexander (Helga E Lindqvist)</td>\n",
       "      <td>female</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3101298</td>\n",
       "      <td>12.2875</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Pclass                                          Name     Sex  \\\n",
       "0          892       3                              Kelly, Mr. James    male   \n",
       "1          893       3              Wilkes, Mrs. James (Ellen Needs)  female   \n",
       "2          894       2                     Myles, Mr. Thomas Francis    male   \n",
       "3          895       3                              Wirz, Mr. Albert    male   \n",
       "4          896       3  Hirvonen, Mrs. Alexander (Helga E Lindqvist)  female   \n",
       "\n",
       "    Age  SibSp  Parch   Ticket     Fare Cabin Embarked  \n",
       "0  34.5      0      0   330911   7.8292   NaN        Q  \n",
       "1  47.0      1      0   363272   7.0000   NaN        S  \n",
       "2  62.0      0      0   240276   9.6875   NaN        Q  \n",
       "3  27.0      0      0   315154   8.6625   NaN        S  \n",
       "4  22.0      1      1  3101298  12.2875   NaN        S  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_unLabeled.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "89b7855f-9e79-48bd-801e-8ec3f73a2984",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T06:17:00.691323Z",
     "start_time": "2022-04-27T06:17:00.657741Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          714 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        204 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 83.7+ KB\n"
     ]
    }
   ],
   "source": [
    "df_labeled.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "c85aae93",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T06:18:24.433704Z",
     "start_time": "2022-04-27T06:18:24.427106Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of rows :891 \n",
      "Number of columns:12\n"
     ]
    }
   ],
   "source": [
    "## Checking for  the number of rows and columns  in the dataset\n",
    "# 检查数据集中的行数和列数\n",
    "print(f\"Number of rows :{df_labeled.shape[0]} \\nNumber of columns:{df_labeled.shape[1]}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c0d11529-2d66-4f24-a4bd-c11a13d746cf",
   "metadata": {},
   "source": [
    "| 序号 | 字段名          | 类型    | 缺失值情况        | 中文解释                                                     |\n",
    "| ---- | --------------- | ------- | ----------------- | ------------------------------------------------------------ |\n",
    "| 0    | **PassengerId** | int64   | 无                | 乘客编号（唯一标识，用于索引，无实际预测意义）               |\n",
    "| 1    | **Survived**    | int64   | 无                | 是否存活（目标变量，0 = 未生还，1 = 生还）                   |\n",
    "| 2    | **Pclass**      | int64   | 无                | 客舱等级（1 = 一等舱，2 = 二等舱，3 = 三等舱，社会经济地位的 proxy） |\n",
    "| 3    | **Name**        | object  | 无                | 姓名（可衍生称呼 Title，如 Mr, Miss, Dr，有预测价值）        |\n",
    "| 4    | **Sex**         | object  | 无                | 性别（male/female，强预测因子之一）                          |\n",
    "| 5    | **Age**         | float64 | 177 缺失          | 年龄（数值型，可分箱或加“是否儿童”特征）                     |\n",
    "| 6    | **SibSp**       | int64   | 无                | 同行的兄弟姐妹/配偶数量（家庭结构相关）                      |\n",
    "| 7    | **Parch**       | int64   | 无                | 同行的父母/子女数量（家庭结构相关）                          |\n",
    "| 8    | **Ticket**      | object  | 无                | 船票号（可解析出某些分组模式，但原始值意义不大）             |\n",
    "| 9    | **Fare**        | float64 | 无（test 有缺失） | 票价（与舱位/财富相关，长尾分布，需 log 变换或标准化）       |\n",
    "| 10   | **Cabin**       | object  | 687 缺失          | 舱号（信息量大，但缺失严重；可提取首字母 A/B/C…，对应不同甲板） |\n",
    "| 11   | **Embarked**    | object  | 2 缺失            | 登船港口（C = Cherbourg，Q = Queenstown，S = Southampton；需 one-hot） |"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "89583cb4",
   "metadata": {},
   "source": [
    "## EDA"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ee6bbe99-c708-4b6e-bdd5-927d8a2571a3",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T06:20:26.625771Z",
     "start_time": "2022-04-27T06:20:26.618401Z"
    }
   },
   "source": [
    "什么是EDA？ \n",
    "在kaggle社区经常会遇到EDA这个词。EDA的全称是Exploratory Data Analysis，是一种探索式的数据分析，  \n",
    "\n",
    "探索性数据分析（EDA）是由数据科学家用来分析和调查数据集，并总结其主要特征，通常采用数据可视化方法。  \n",
    "它有助于确定如何最好地操作数据源以获得你所需要的答案，使数据科学家更容易发现模式，发现异常，测试一个假设，或检查假设。  \n",
    "\n",
    "EDA的主要目的是目的是为了理解你的数据、做出任何假设之前帮助观察数据。它可以帮助识别明显的错误，以及更好地理解数据中的模式，检测异常值或异常事件，找到变量间的有趣关系。  \n",
    "\n",
    "通过总结数据的主要特征、绘制图表从而更形象生动的理解。  \n",
    "常用的作图方法有：直方图（Histograms），箱形图（Box plot），散点图（Scatter plot）等等。  "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e98fd08c-8933-4b29-9221-e2f9920c5f44",
   "metadata": {},
   "source": [
    "为什么要做探索性数据分析？\n",
    "\n",
    "对数据集更深的理解（分布、缺失等统计信息）  \n",
    "获得高质量的数据集（异常值、缺失值的基本处理）  \n",
    "机器学习模型、实证假设构建的思路（灵感）  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "2064c134",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:17:04.697219Z",
     "start_time": "2022-04-27T07:17:04.680273Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',\n",
       "       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看数据集的列\n",
    "df_labeled.columns\n",
    "# 查看各个元素和Survived的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "b15239e3",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T06:21:17.942796Z",
     "start_time": "2022-04-27T06:21:17.586410Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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48aYPn06AKB27dpYtGgR+vbtixkzZrxxpj8REVVcvIxFshEXF4eqVauiVq1aGDhwIBISEqS+rKwsDBgwAKtXry42EOXk5MDAwEClzdDQENnZ2YiKiirz2omIqOww7JAsNGvWDMHBwTh8+DDWrl2Le/fuoXXr1njx4gUAYMKECWjRogW8vb2LXd7Lywvnzp3Dtm3bkJ+fj0ePHmH27NkAgMTExHe2H0REpHm8jEWy0KVLF+nfjRs3RrNmzWBvb48dO3bA0tISx48fx5UrV165fKdOnbB48WJ8/vnnGDx4MPT19TFt2jScPn36tR9BTkREFR9/i5MsmZmZoW7durhz5w6OHz+O+Ph4mJmZQUdHR5q47OPjg7Zt20rLBAYGIjU1FQkJCXjy5Il0FqhWrVrlsQtERKQhPLNDspSRkYH4+HgMHjwYffv2xfDhw1X6nZ2dsWzZMvTo0UOlXaFQoGrVqgCAbdu2wc7ODm5ubu+sbiIi0jyGHZKFiRMnokePHrC3t8fjx48xY8YMaGtro3///rC0tCx2UnKNGjXg4OAgPV+8eDE6d+4MLS0t7NmzBwsWLMCOHTugra39LneFiIg0jGGHZOGPP/5A//798fTpU1haWqJVq1Y4f/48LC0tS7yOsLAwzJ07Fzk5OXBxccEvv/yiMheIiIjeTwohhCjvIspbeno6TE1NkZaWxi8CJSIiek+U9O83JygTERGRrDHsEBERkaxxzs474j7pp/IugahCilrsV94lEJHM8cwOERERyRrDDhEREckaww4RERHJGsMOERERyRrDDhEREckaww4RERHJGsMOERERyRrDDhEREckaww4RERHJGsMOERERyRrDDhEREckaww4RERHJGsMOERERyRrDDhEREckaww4RERHJGsMOERERyRrDDhEREckaww4RERHJGsMOERERyRrDDhEREckaww4RERHJGsMOERERyRrDDhEREckaww4RERHJGsMOERERyRrDDhEREclauYadmTNnQqFQqDzq168v9WdnZyMgIABVqlSBsbExfHx8kJycrLKOhIQEdOvWDZUqVYKVlRUmTZqEvLy8d70rREREVEHplHcBDRs2xLFjx6TnOjr/V9KECRNw8OBB7Ny5E6amphg9ejR69eqFs2fPAgDy8/PRrVs32NjY4Ny5c0hMTISfnx90dXUxb968d74vREREVPGUe9jR0dGBjY1Nkfa0tDSsX78eISEhaN++PQBg48aNaNCgAc6fP4/mzZvjyJEjiImJwbFjx2BtbQ1XV1fMmTMHX331FWbOnAk9Pb13vTtERERUwZT7nJ24uDhUrVoVtWrVwsCBA5GQkAAAiIqKQm5uLjp06CCNrV+/PmrUqIHIyEgAQGRkJJydnWFtbS2N8fLyQnp6Om7evPnKbebk5CA9PV3lQURERPJUrmGnWbNmCA4OxuHDh7F27Vrcu3cPrVu3xosXL5CUlAQ9PT2YmZmpLGNtbY2kpCQAQFJSkkrQKewv7HuV+fPnw9TUVHrY2dlpdseIiIiowijXy1hdunSR/t24cWM0a9YM9vb22LFjBwwNDctsu0FBQQgMDJSep6enM/AQERHJVLlfxvonMzMz1K1bF3fu3IGNjQ1evnyJ1NRUlTHJycnSHB8bG5sid2cVPi9uHlAhfX19KJVKlQcRERHJU4UKOxkZGYiPj4etrS3c3d2hq6uLiIgIqf/WrVtISEiAh4cHAMDDwwPXr19HSkqKNObo0aNQKpVwcnJ65/UTERFRxVOul7EmTpyIHj16wN7eHo8fP8aMGTOgra2N/v37w9TUFMOGDUNgYCDMzc2hVCoxZswYeHh4oHnz5gCATp06wcnJCYMHD8aiRYuQlJSEqVOnIiAgAPr6+uW5a0RERFRBlGvY+eOPP9C/f388ffoUlpaWaNWqFc6fPw9LS0sAwLJly6ClpQUfHx/k5OTAy8sLa9askZbX1tbGgQMHMGrUKHh4eMDIyAj+/v6YPXt2ee0SERERVTAKIYQo7yLKW3p6OkxNTZGWllZm83fcJ/1UJuslet9FLfYr7xKI6D1V0r/fFWrODhEREZGmMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBER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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Survived\n",
    "ax = sns.countplot(data=df_labeled, x = 'Survived');  # countplot是seaborn库中分类图的一种，作用是使用条形显示每个分箱器中的观察计数\n",
    "ax.bar_label(ax.containers[0]) # 在柱状图上显示y的数值，取出AxesSubplot对象的containers属性，得到container对象的迭代器，遍历其或单独取出container对象传给plt.bar_label\n",
    "\n",
    "plt.title(\"Number of people Survived vs  Deceased\")\n",
    "plt.xlabel(\"Survived vs  Deceased\")\n",
    "plt.ylabel(\"Number of people\")\n",
    "plt.xticks(ticks=[0,1],labels=['Deceased','Survived'])\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "0101e884",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T06:30:38.066510Z",
     "start_time": "2022-04-27T06:30:38.050148Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(29.69911764705882)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Age\n",
    "df_labeled.Age.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "dfdd055e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T06:30:44.058081Z",
     "start_time": "2022-04-27T06:30:44.021465Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      22\n",
       "1      38\n",
       "2      26\n",
       "3      35\n",
       "4      35\n",
       "       ..\n",
       "886    27\n",
       "887    19\n",
       "888    29\n",
       "889    26\n",
       "890    32\n",
       "Name: Age, Length: 891, dtype: int64"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将Age为NAN的单元，使用mean平均值填充\n",
    "# df_labeled['Age']\n",
    "df_labeled['Age'] = df_labeled['Age'].fillna(df_labeled['Age'].mean()) # 使用mean值填充Age的NAN值\n",
    "df_labeled['Age'] = df_labeled['Age'].astype(int)\n",
    "df_labeled['Age']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "bee7acd9",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:01:24.847181Z",
     "start_time": "2022-04-27T07:01:24.839637Z"
    }
   },
   "outputs": [],
   "source": [
    "# 将df_labeled进行拷贝\n",
    "temp = df_labeled .copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "5fb20453",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:01:25.785305Z",
     "start_time": "2022-04-27T07:01:25.769803Z"
    }
   },
   "outputs": [],
   "source": [
    "# 根据不同年龄段，打上不同的标签\n",
    "temp['Age'] = pd.cut(temp['Age'], bins = [0,12,20,40,120],labels=['Children','Teenage','Adult','Elder'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "07d78e4c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:01:26.711304Z",
     "start_time": "2022-04-27T07:01:26.328988Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Text(0, 0, '62'), Text(0, 0, '111'), Text(0, 0, '563'), Text(0, 0, '148')]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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b18lJCRoyZIl2r59u3bs2CFJevfdd3Xw4EH93//9nzp37qyBAwfqoYce0oIFC3TmzBl37RIAAPAgbg87qampSkpKUr9+/Vzas7OzVVFR4dLerl07xcTEKCsrS5KUlZWlDh06KDw83DkmMTFRxcXF+uSTTy74nOXl5SouLnZZAACAOfm488lffvll7d27V7t3767W53A45Ovrq6CgIJf28PBwORwO55gfB51z/ef6LmTu3Ll68MEHL7F6AADQGLhtZufYsWO6//77tWLFCjVt2rRBnzsjI0NFRUXO5dixYw36/AAAoOG4LexkZ2eroKBAXbp0kY+Pj3x8fLRlyxY9/fTT8vHxUXh4uM6cOaPCwkKXx+Xn5ysiIkKSFBERUe3TWefWz405Hz8/P1mtVpcFAACYk9vCzi233KIDBw5o3759zqVr164aOXKk8+cmTZpo06ZNzsfk5OQoLy9PdrtdkmS323XgwAEVFBQ4x2zcuFFWq1VxcXENvk8AAMDzuO2anebNm+u6665zaQsICFBISIizfcyYMUpLS1NwcLCsVqsmTJggu92uHj16SJL69++vuLg4jRo1So899pgcDoemTp2q1NRU+fn5Nfg+AQAAz+PWC5R/zlNPPSUvLy8lJyervLxciYmJWrhwobPf29tb69at07hx42S32xUQEKCUlBTNmjXLjVUDAABPYjEMw3B3Ee5WXFwsm82moqIirt8BoIQpy91dAv4re95od5cAD1bT92+332cHAACgPhF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqRF2AACAqdUq7PTt21eFhYXV2ouLi9W3b99LrQkAAKDO1CrsvP/++zpz5ky19rKyMn344YeXXBQAAEBd8fklgz/66CPnzwcPHpTD4XCunz17VuvXr9f//M//1F11AAAAl+gXhZ3OnTvLYrHIYrGc93SVv7+/nnnmmTorDgAA4FL9orCTm5srwzB01VVXadeuXQoNDXX2+fr6KiwsTN7e3nVeJAAAQG39orDTsmVLSVJVVVW9FAMAAFDXflHY+bEjR45o8+bNKigoqBZ+pk+ffsmFAQAA1IVahZ0XXnhB48aNU4sWLRQRESGLxeLss1gshB0AAOAxahV2Hn74Yc2ePVvp6el1XQ8AAECdqtV9dk6dOqU77rijrmsBAACoc7UKO3fccYfefffduq4FAACgztUq7FxzzTWaNm2a7rrrLj3xxBN6+umnXZaaWrRokTp27Cir1Sqr1Sq73a533nnH2V9WVqbU1FSFhIQoMDBQycnJys/Pd9lGXl6ekpKS1KxZM4WFhWnKlCmqrKyszW4BAAATqtU1O88//7wCAwO1ZcsWbdmyxaXPYrFo4sSJNdrOlVdeqUceeURt2rSRYRhatmyZbrvtNv373/9W+/btNXnyZL399tt65ZVXZLPZNH78eN1+++3atm2bpB/u2pyUlKSIiAht375dJ06c0OjRo9WkSRPNmTOnNrsGAABMxmIYhuHuIn4sODhY8+bN09ChQxUaGqqVK1dq6NChkqRDhw4pNjZWWVlZ6tGjh9555x0NGjRIx48fV3h4uCRp8eLFSk9P19dffy1fX9/zPkd5ebnKy8ud68XFxYqOjlZRUZGsVmv97yQAj5YwZbm7S8B/Zc8b7e4S4MGKi4tls9l+9v27Vqex6sPZs2f18ssvq7S0VHa7XdnZ2aqoqFC/fv2cY9q1a6eYmBhlZWVJkrKystShQwdn0JGkxMREFRcX65NPPrngc82dO1c2m825REdH19+OAQAAt6rVaax77rnnov0vvvhijbd14MAB2e12lZWVKTAwUG+88Ybi4uK0b98++fr6KigoyGV8eHi48wtIHQ6HS9A513+u70IyMjKUlpbmXD83swMAAMynVmHn1KlTLusVFRX6+OOPVVhYeN4vCL2Ytm3bat++fSoqKtKrr76qlJSUatcB1TU/Pz/5+fnV63MAAADPUKuw88Ybb1Rrq6qq0rhx43T11Vf/om35+vrqmmuukSQlJCRo9+7d+tvf/qbhw4frzJkzKiwsdJndyc/PV0REhCQpIiJCu3btctneuU9rnRsDAAAub3V2zY6Xl5fS0tL01FNPXdJ2qqqqVF5eroSEBDVp0kSbNm1y9uXk5CgvL092u12SZLfbdeDAARUUFDjHbNy4UVarVXFxcZdUBwAAMIdafxHo+Rw9evQX3eMmIyNDAwcOVExMjE6fPq2VK1fq/fff14YNG2Sz2TRmzBilpaUpODhYVqtVEyZMkN1uV48ePSRJ/fv3V1xcnEaNGqXHHntMDodDU6dOVWpqKqepAACApFqGnR9f3CtJhmHoxIkTevvtt5WSklLj7RQUFGj06NE6ceKEbDabOnbsqA0bNuhXv/qVJOmpp56Sl5eXkpOTVV5ersTERC1cuND5eG9vb61bt07jxo2T3W5XQECAUlJSNGvWrNrsFgAAMKFa3WenT58+LuteXl4KDQ1V3759dc8998jHp04njOpdTT+nD+DywH12PAf32cHF1PT9u1apZPPmzbUuDAAAoCFd0hTM119/rZycHEk/fIQ8NDS0TooCAACoK7X6NFZpaanuueceRUZG6qabbtJNN92kqKgojRkzRt99911d1wgAAFBrtQo7aWlp2rJli9566y0VFhaqsLBQb775prZs2aIHHnigrmsEAACotVqdxnrttdf06quvqnfv3s62W2+9Vf7+/ho2bJgWLVpUV/UBAABcklrN7Hz33XfVvpNKksLCwjiNBQAAPEqtwo7dbteMGTNUVlbmbPv+++/14IMPOu9uDAAA4AlqdRpr/vz5GjBggK688kp16tRJkrR//375+fnp3XffrdMCAQAALkWtwk6HDh105MgRrVixQocOHZIkjRgxQiNHjpS/v3+dFggAAHApahV25s6dq/DwcI0dO9al/cUXX9TXX3+t9PT0OikOAADgUtXqmp3nnntO7dq1q9bevn17LV68+JKLAgAAqCu1CjsOh0ORkZHV2kNDQ3XixIlLLgoAAKCu1CrsREdHa9u2bdXat23bpqioqEsuCgAAoK7U6pqdsWPHatKkSaqoqFDfvn0lSZs2bdKf//xn7qAMAAA8Sq3CzpQpU/Ttt9/qj3/8o86cOSNJatq0qdLT05WRkVGnBQIAAFyKWoUdi8WiRx99VNOmTdOnn34qf39/tWnTRn5+fnVdHwAAwCWpVdg5JzAwUN26daurWgAAAOpcrS5QBgAAaCwIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNTcGnbmzp2rbt26qXnz5goLC9OQIUOUk5PjMqasrEypqakKCQlRYGCgkpOTlZ+f7zImLy9PSUlJatasmcLCwjRlyhRVVlY25K4AAAAP5daws2XLFqWmpmrHjh3auHGjKioq1L9/f5WWljrHTJ48WW+99ZZeeeUVbdmyRcePH9ftt9/u7D979qySkpJ05swZbd++XcuWLdPSpUs1ffp0d+wSAADwMBbDMAx3F3HO119/rbCwMG3ZskU33XSTioqKFBoaqpUrV2ro0KGSpEOHDik2NlZZWVnq0aOH3nnnHQ0aNEjHjx9XeHi4JGnx4sVKT0/X119/LV9f35993uLiYtlsNhUVFclqtdbrPgLwfAlTlru7BPxX9rzR7i4BHqym798edc1OUVGRJCk4OFiSlJ2drYqKCvXr1885pl27doqJiVFWVpYkKSsrSx06dHAGHUlKTExUcXGxPvnkk/M+T3l5uYqLi10WAABgTh4TdqqqqjRp0iT17NlT1113nSTJ4XDI19dXQUFBLmPDw8PlcDicY34cdM71n+s7n7lz58pmszmX6OjoOt4bAADgKTwm7KSmpurjjz/Wyy+/XO/PlZGRoaKiIudy7Nixen9OAADgHj7uLkCSxo8fr3Xr1umDDz7QlVde6WyPiIjQmTNnVFhY6DK7k5+fr4iICOeYXbt2uWzv3Ke1zo35KT8/P/n5+dXxXgAAAE/k1pkdwzA0fvx4vfHGG3rvvffUunVrl/6EhAQ1adJEmzZtcrbl5OQoLy9PdrtdkmS323XgwAEVFBQ4x2zcuFFWq1VxcXENsyMAAMBjuXVmJzU1VStXrtSbb76p5s2bO6+xsdls8vf3l81m05gxY5SWlqbg4GBZrVZNmDBBdrtdPXr0kCT1799fcXFxGjVqlB577DE5HA5NnTpVqampzN4AAAD3hp1FixZJknr37u3SvmTJEt11112SpKeeekpeXl5KTk5WeXm5EhMTtXDhQudYb29vrVu3TuPGjZPdbldAQIBSUlI0a9ashtoNAADgwTzqPjvuwn12APwY99nxHNxnBxfTKO+zAwAAUNcIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAwNQIOwAAeKAPPvhAgwcPVlRUlCwWi9asWXPBsX/4wx9ksVg0f/58l/bDhw/rtttuU4sWLWS1WtWrVy9t3ry5fgv3QIQdAAA8UGlpqTp16qQFCxZcdNwbb7yhHTt2KCoqqlrfoEGDVFlZqffee0/Z2dnq1KmTBg0aJIfDUV9leyQfdxcAAACqGzhwoAYOHHjRMf/5z380YcIEbdiwQUlJSS5933zzjY4cOaLMzEx17NhRkvTII49o4cKF+vjjjxUREVFvtXsaZnYAAGiEqqqqNGrUKE2ZMkXt27ev1h8SEqK2bdtq+fLlKi0tVWVlpZ577jmFhYUpISHBDRW7DzM7AAA0Qo8++qh8fHw0ceLE8/ZbLBb961//0pAhQ9S8eXN5eXkpLCxM69ev1xVXXNHA1boXYQcAgEYmOztbf/vb37R3715ZLJbzjjEMQ6mpqQoLC9OHH34of39//f3vf9fgwYO1e/duRUZGNnDV7sNpLAAAGpkPP/xQBQUFiomJkY+Pj3x8fPTll1/qgQceUKtWrSRJ7733ntatW6eXX35ZPXv2VJcuXbRw4UL5+/tr2bJl7t2BBsbMDgAAjcyoUaPUr18/l7bExESNGjVKd999tyTpu+++kyR5ebnOa3h5eamqqqphCvUQhB0AADxQSUmJPvvsM+d6bm6u9u3bp+DgYMXExCgkJMRlfJMmTRQREaG2bdtKkux2u6644gqlpKRo+vTp8vf31wsvvKDc3Nxqn9wyO05jAQDggfbs2aP4+HjFx8dLktLS0hQfH6/p06fX6PEtWrTQ+vXrVVJSor59+6pr167aunWr3nzzTXXq1Kk+S/c4zOwAAOCBevfuLcMwajz+iy++qNbWtWtXbdiwoQ6rapyY2QEAAKbGzA4A4LKWMGW5u0vAf2XPG10v22VmBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphBwAAmBphB2jEPvjgAw0ePFhRUVGyWCxas2aNS//rr7+u/v37KyQkRBaLRfv27au2jeeff169e/eW1WqVxWJRYWFhg9QOAA2FsAM0YqWlperUqZMWLFhwwf5evXrp0UcfveA2vvvuOw0YMED/+7//W19lAoBb8UWgQCM2cOBADRw48IL9o0aNkiR98cUXFxwzadIkSdL7779fh5UBgOdgZgcAAJgaYQcAAJgaYQcAAJgaYQcAAJgaYQcAAJgan8YCGrGSkhJ99tlnzvXc3Fzt27dPwcHBiomJ0cmTJ5WXl6fjx49LknJyciRJERERioiIkCQ5HA45HA7ndg4cOKDmzZsrJiZGwcHBDbxHAFD3mNkBGrE9e/YoPj5e8fHxkqS0tDTFx8dr+vTpkqS1a9cqPj5eSUlJkqQ777xT8fHxWrx4sXMbixcvVnx8vMaOHStJuummmxQfH6+1a9c28N4AQP2wGIZhuLsIdysuLpbNZlNRUZGsVqu7ywHgZglTlru7BPxX9rzR9f4cHG/P8UuPd03fv5nZAQAApsY1O0AN8D8/z9EQ/9MHYC7M7AAAAFMj7AAAAFMj7AAAAFNza9j54IMPNHjwYEVFRclisWjNmjUu/YZhaPr06YqMjJS/v7/69eunI0eOuIw5efKkRo4cKavVqqCgII0ZM0YlJSUNuBcAAMCTuTXslJaWqlOnTlqwYMF5+x977DE9/fTTWrx4sXbu3KmAgAAlJiaqrKzMOWbkyJH65JNPtHHjRq1bt04ffPCBfv/73zfULgAAAA/n1k9jDRw4UAMHDjxvn2EYmj9/vqZOnarbbrtNkrR8+XKFh4drzZo1uvPOO/Xpp59q/fr12r17t7p27SpJeuaZZ3Trrbfq8ccfV1RU1Hm3XV5ervLycud6cXFxHe8ZAADwFB57zU5ubq4cDof69evnbLPZbOrevbuysrIkSVlZWQoKCnIGHUnq16+fvLy8tHPnzgtue+7cubLZbM4lOjq6/nYEAAC4lceGHYfDIUkKDw93aQ8PD3f2ORwOhYWFufT7+PgoODjYOeZ8MjIyVFRU5FyOHTtWx9UDAABPcVneVNDPz09+fn7uLgMAADQAj53ZOfeNzPn5+S7t+fn5zr6IiAgVFBS49FdWVurkyZPOMQAA4PLmsWGndevWioiI0KZNm5xtxcXF2rlzp+x2uyTJbrersLBQ2dnZzjHvvfeeqqqq1L179wavGQAAeB63nsYqKSnRZ5995lzPzc3Vvn37FBwcrJiYGE2aNEkPP/yw2rRpo9atW2vatGmKiorSkCFDJEmxsbEaMGCAxo4dq8WLF6uiokLjx4/XnXfeecFPYgEAgMuLW8POnj171KdPH+d6WlqaJCklJUVLly7Vn//8Z5WWlur3v/+9CgsL1atXL61fv15NmzZ1PmbFihUaP368brnlFnl5eSk5OVlPP/10g+8LAADwTG4NO71795ZhGBfst1gsmjVrlmbNmnXBMcHBwVq5cmV9lAcAAEzAY6/ZAQAAqAuEHQAAYGqEHQAAYGqEHQAAYGqEncvAf/7zH/3ud79TSEiI/P391aFDB+3Zs0eSVFFRofT0dHXo0EEBAQGKiorS6NGjdfz4cTdXDQBA3SDsmNypU6fUs2dPNWnSRO+8844OHjyoJ554QldccYUk6bvvvtPevXs1bdo07d27V6+//rpycnL061//2s2VAwBQNy7L78a6nDz66KOKjo7WkiVLnG2tW7d2/myz2bRx40aXxzz77LO6/vrrlZeXp5iYmAarFQCA+sDMjsmtXbtWXbt21R133KGwsDDFx8frhRdeuOhjioqKZLFYFBQU1DBFAgBQjwg7Jvf5559r0aJFatOmjTZs2KBx48Zp4sSJWrZs2XnHl5WVKT09XSNGjJDVam3gagEAqHucxjK5qqoqde3aVXPmzJEkxcfH6+OPP9bixYuVkpLiMraiokLDhg2TYRhatGiRO8oFAKDOMbNjcpGRkYqLi3Npi42NVV5enkvbuaDz5ZdfauPGjczqAABMg5kdk+vZs6dycnJc2g4fPqyWLVs6188FnSNHjmjz5s0KCQlp6DIBAKg3hB2Tmzx5sm644QbNmTNHw4YN065du/T888/r+eefl/RD0Bk6dKj27t2rdevW6ezZs3I4HJJ++JJVX19fd5YPAMAlI+yYXLdu3fTGG28oIyNDs2bNUuvWrTV//nyNHDlS0g83HFy7dq0kqXPnzi6P3bx5s3r37t3AFQMAULcIO5eBQYMGadCgQefta9WqlQzDaOCKAABoOFygDAAATI2ZnVpKmLLc3SXgv7LnjXZ3CQAAD8bMDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXThJ0FCxaoVatWatq0qbp3765du3a5uyQAAOABTBF2Vq1apbS0NM2YMUN79+5Vp06dlJiYqIKCAneXBgAA3MwUYefJJ5/U2LFjdffddysuLk6LFy9Ws2bN9OKLL7q7NAAA4GY+7i7gUp05c0bZ2dnKyMhwtnl5ealfv37Kyso672PKy8tVXl7uXC8qKpIkFRcX1/h5z5Z/X8uKUdd+yXGrLY635+B4X1443peXX3q8z403DOPiA41G7j//+Y8hydi+fbtL+5QpU4zrr7/+vI+ZMWOGIYmFhYWFhYXFBMuxY8cumhUa/cxObWRkZCgtLc25XlVVpZMnTyokJEQWi8WNlTWs4uJiRUdH69ixY7Jare4uB/WM43154XhfXi7X420Yhk6fPq2oqKiLjmv0YadFixby9vZWfn6+S3t+fr4iIiLO+xg/Pz/5+fm5tAUFBdVXiR7ParVeVi+Oyx3H+/LC8b68XI7H22az/eyYRn+Bsq+vrxISErRp0yZnW1VVlTZt2iS73e7GygAAgCdo9DM7kpSWlqaUlBR17dpV119/vebPn6/S0lLdfffd7i4NAAC4mSnCzvDhw/X1119r+vTpcjgc6ty5s9avX6/w8HB3l+bR/Pz8NGPGjGqn9GBOHO/LC8f78sLxvjiLYfzc57UAAAAar0Z/zQ4AAMDFEHYAAICpEXYAAICpEXYaIYvFojVr1lyw//3335fFYlFhYaEkaenSpT97H6GZM2eqc+fOdVYjgIZXm9dxq1atNH/+/HqpB3Xn5/7uf/HFF7JYLNq3b1+D1dSYEHY8kMPh0IQJE3TVVVfJz89P0dHRGjx4sMu9hC7mhhtu0IkTJ2p0oyW4j8Viuegyc+ZMd5cID5CVlSVvb28lJSU1yPP93Jsq6sddd9113r8DAwYMcHdppmCKj56byRdffKGePXsqKChI8+bNU4cOHVRRUaENGzYoNTVVhw4d+tlt+Pr6XvDu0bV15swZ+fr61uk2L3cnTpxw/rxq1SpNnz5dOTk5zrbAwEB3lAUPk5mZqQkTJigzM1PHjx//2dvio/EaMGCAlixZ4tLWkB8lN/PfeWZ2PMwf//hHWSwW7dq1S8nJybr22mvVvn17paWlaceOHc5x33zzjX7zm9+oWbNmatOmjdauXevs++lprPN55JFHFB4erubNm2vMmDEqKytz6b/rrrs0ZMgQzZ49W1FRUWrbtq0k6dixYxo2bJiCgoIUHBys2267TV988UW1xz3++OOKjIxUSEiIUlNTVVFRUTe/IBOJiIhwLjabTRaLxaXt5ZdfVmxsrJo2bap27dpp4cKFLo+vi2Px0ksvqWvXrmrevLkiIiL029/+VgUFBS7Ps3btWrVp00ZNmzZVnz59tGzZsmr/vrZu3aobb7xR/v7+io6O1sSJE1VaWlovv7fLSUlJiVatWqVx48YpKSlJS5cuden/uddx7969NWnSJJe2IUOG6K677jrv87Vq1UqS9Jvf/EYWi8W5jobh5+fn8jcgIiJCV1xxxXnH7tq1S/Hx8WratKm6du2qf//739XGfPzxxxo4cKACAwMVHh6uUaNG6ZtvvnH29+7dW+PHj9ekSZPUokULJSYm1tu+uRthx4OcPHlS69evV2pqqgICAqr1//i6mwcffFDDhg3TRx99pFtvvVUjR47UyZMna/Q8q1ev1syZMzVnzhzt2bNHkZGR1d5IJWnTpk3KycnRxo0btW7dOlVUVCgxMVHNmzfXhx9+qG3btikwMFADBgzQmTNnnI/bvHmzjh49qs2bN2vZsmVaunRptT/SuLgVK1Zo+vTpmj17tj799FPNmTNH06ZN07JlyySpzo5FRUWFHnroIe3fv19r1qzRF1984fJGmJubq6FDh2rIkCHav3+/7rvvPv31r391qfXo0aMaMGCAkpOT9dFHH2nVqlXaunWrxo8fX6+/o8vB6tWr1a5dO7Vt21a/+93v9OKLL+rcrdFq+jr+JXbv3i1JWrJkiU6cOOFch2cpKSnRoEGDFBcXp+zsbM2cOVN/+tOfXMYUFhaqb9++io+P1549e7R+/Xrl5+dr2LBhLuOWLVsmX19fbdu2TYsXL27I3WhYF/1OdDSonTt3GpKM119//aLjJBlTp051rpeUlBiSjHfeeccwDMPYvHmzIck4deqUYRiGsWTJEsNmsznH2+12449//KPLNrt372506tTJuZ6SkmKEh4cb5eXlzraXXnrJaNu2rVFVVeVsKy8vN/z9/Y0NGzY4H9eyZUujsrLSOeaOO+4whg8fXrNfwmXqp8fo6quvNlauXOky5qGHHjLsdrthGPV3LHbv3m1IMk6fPm0YhmGkp6cb1113ncuYv/71ry7/vsaMGWP8/ve/dxnz4YcfGl5eXsb3339fw98AzueGG24w5s+fbxiGYVRUVBgtWrQwNm/ebBhGzV7HN998s3H//fe7jLntttuMlJQU53rLli2Np556yrkuyXjjjTfqcC9QEykpKYa3t7cREBDgssyePdswDNfj8txzzxkhISEur69FixYZkox///vfhmH88Peif//+Ls9x7NgxQ5KRk5NjGMYP/z7i4+Prf+c8ADM7HsT4BTez7tixo/PngIAAWa3WaqcfLuTTTz9V9+7dXdrO96WpHTp0cDl/u3//fn322Wdq3ry5AgMDFRgYqODgYJWVleno0aPOce3bt5e3t7dzPTIyssa1QSotLdXRo0c1ZswY5+85MDBQDz/8sPP3XFfHIjs7W4MHD1ZMTIyaN2+um2++WZKUl5cnScrJyVG3bt1c6rv++utd1vfv36+lS5e61JqYmKiqqirl5ubW7S/nMpKTk6Ndu3ZpxIgRkiQfHx8NHz5cmZmZkmr+Okbj0adPH+3bt89l+cMf/lBt3KeffqqOHTuqadOmzrafHvv9+/dr8+bNLq/Ldu3aSZLL34iEhIR62hvPwgXKHqRNmzayWCw1ugi5SZMmLusWi0VVVVV1Ws9PT6WVlJQoISFBK1asqDY2NDS0QWszs5KSEknSCy+8UO3N7FxwqYtjUVpaqsTERCUmJmrFihUKDQ1VXl6eEhMTXU6F1aTe++67TxMnTqzWFxMTU+PtwFVmZqYqKytdLkg2DEN+fn569tlna7QNLy+vav+J4vo5zxUQEKBrrrmmTrZVUlKiwYMH69FHH63WFxkZ6fKclwPCjgcJDg5WYmKiFixYoIkTJ1b7R1hYWPiz98upidjYWO3cuVOjR492tv344ucL6dKli1atWqWwsDBZrdZLrgPnFx4erqioKH3++ecaOXLkecfUxbE4dOiQvv32Wz3yyCOKjo6WJO3Zs8dlTNu2bfXPf/7Tpe2n13F06dJFBw8erLM/0pAqKyu1fPlyPfHEE+rfv79L35AhQ/SPf/yjRq/j0NBQl0/9nT17Vh9//LH69Olzwedu0qSJzp49W0d7gvoQGxurl156SWVlZc7ZnZ8e+y5duui1115Tq1at5OPDWz2nsTzMggULdPbsWV1//fV67bXXdOTIEX366ad6+umn62yK+v7779eLL76oJUuW6PDhw5oxY4Y++eSTn33cyJEj1aJFC91222368MMPlZubq/fff18TJ07UV199VSe14QcPPvig5s6dq6efflqHDx/WgQMHtGTJEj355JOS6uZYxMTEyNfXV88884w+//xzrV27Vg899JDLmPvuu0+HDh1Senq6Dh8+rNWrVzsvcLZYLJKk9PR0bd++XePHj9e+fft05MgRvfnmm1ygfAnWrVunU6dOacyYMbruuutcluTkZGVmZtboddy3b1+9/fbbevvtt3Xo0CGNGzfuop/SlH74RNamTZvkcDh06tSpetxL/FR5ebkcDofL8uNPT53z29/+VhaLRWPHjtXBgwf1z3/+U48//rjLmNTUVJ08eVIjRozQ7t27dfToUW3YsEF33333ZRlmCTse5qqrrtLevXvVp08fPfDAA7ruuuv0q1/9Sps2bdKiRYvq5DmGDx+uadOm6c9//rMSEhL05Zdfaty4cT/7uGbNmumDDz5QTEyMbr/9dsXGxjo/7spMT92699579fe//11LlixRhw4ddPPNN2vp0qVq3bq1pLo5FqGhoVq6dKleeeUVxcXF6ZFHHqn2B7N169Z69dVX9frrr6tjx45atGiR89NY5+7/0bFjR23ZskWHDx/WjTfeqPj4eE2fPp37wVyCzMxM9evX77w3Bk1OTtaePXsUGxv7s6/je+65RykpKRo9erRuvvlmXXXVVRed1ZGkJ554Qhs3blR0dLTi4+PrdL9wcevXr1dkZKTL0qtXr2rjAgMD9dZbb+nAgQOKj4/XX//612qnq6KiorRt2zadPXtW/fv3V4cOHTRp0iQFBQXJy+vye+u3GL/kqlgAl73Zs2dr8eLFOnbsmLtLAYAa4UQegItauHChunXrppCQEG3btk3z5s3jFBWARoWwA+Cijhw5oocfflgnT55UTEyMHnjgAWVkZLi7LACoMU5jAQAAU7v8rlICAACXFcIOAAAwNcIOAAAwNcIOAAAwNcIOAAAwNcIOAAAwNcIOgEYpKytL3t7eSkpKcncpADwc99kB0Cjde++9CgwMVGZmpnJycvguLgAXxMwOgEanpKREq1at0rhx45SUlOT8JvZz1q5dqzZt2qhp06bq06ePli1bJovF4vKN31u3btWNN94of39/RUdHa+LEiSotLW3YHQHQIAg7ABqd1atXq127dmrbtq1+97vf6cUXX9S5Serc3FwNHTpUQ4YM0f79+3Xfffc5v6n9nKNHj2rAgAFKTk7WRx99pFWrVmnr1q185xdgUpzGAtDo9OzZU8OGDdP999+vyspKRUZG6pVXXlHv3r31l7/8RW+//bYOHDjgHD916lTNnj1bp06dUlBQkO699155e3vrueeec47ZunWrbr75ZpWWlqpp06bu2C0A9YSZHQCNSk5Ojnbt2qURI0ZIknx8fDR8+HBlZmY6+7t16+bymOuvv95lff/+/Vq6dKkCAwOdS2JioqqqqpSbm9swOwKgwfCt5wAalczMTFVWVrpckGwYhvz8/PTss8/WaBslJSW67777NHHixGp9MTExdVYrAM9A2AHQaFRWVmr58uV64okn1L9/f5e+IUOG6B//+Ifatm2rf/7zny59u3fvdlnv0qWLDh48qGuuuabeawbgflyzA6DRWLNmjYYPH66CggLZbDaXvvT0dL333ntavXq12rZtq8mTJ2vMmDHat2+fHnjgAX311VcqLCyUzWbTRx99pB49euiee+7Rvffeq4CAAB08eFAbN26s8ewQgMaDa3YANBqZmZnq169ftaAjScnJydqzZ49Onz6tV199Va+//ro6duyoRYsWOT+N5efnJ0nq2LGjtmzZosOHD+vGG29UfHy8pk+fzr16AJNiZgeA6c2ePVuLFy/WsWPH3F0KADfgmh0AprNw4UJ169ZNISEh2rZtm+bNm8c9dIDLGGEHgOkcOXJEDz/8sE6ePKmYmBg98MADysjIcHdZANyE01gAAMDUuEAZAACYGmEHAACYGmEHAACYGmEHAACYGmEHAACYGmEHAACYGmEHAACYGmEHAACY2v8Dj5oJR+pqLOkAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 根据年龄段进行数据可视化\n",
    "ax = sns.countplot(data = temp, x='Age')\n",
    "ax.bar_label(ax.containers[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "fa5956e3",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:01:27.327315Z",
     "start_time": "2022-04-27T07:01:26.788355Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVuRJREFUeJzt3XlUFeX/B/D3Zd9BkPUr4M6iYIimNws3BNRMFMMFFY2sDDPXjMp9QTPLcq9QqMBdTC0hcsENNxLFDZEwLVlUBAQFWeb3h8f5dWMR8cKF4f06Z85x5nlm5jPc4L6beWZGJgiCACIiIiKJUlN1AURERER1iWGHiIiIJI1hh4iIiCSNYYeIiIgkjWGHiIiIJI1hh4iIiCSNYYeIiIgkjWGHiIiIJI1hh4iIiCSNYYeIqJ7cuHEDMpkM4eHh9b7vefPmQSaT1ft+iRoChh0iiVu7di1kMhm6deumshp27doFmUyG77//vso+cXFxkMlk+Oabb8Rle/fuRc+ePWFhYQE9PT20bt0a/v7+iImJeeY+Hz9+jK+//hpubm4wMjKCiYkJOnTogHfeeQdXr15VynERUeOgoeoCiKhuRUZGomXLljh9+jSuX7+Otm3b1nsNAwcOhLGxMaKiovD2229X2icqKgrq6uoYMWIEAOCLL77AzJkz0bNnT4SEhEBPTw/Xr1/H77//ji1btsDHx6faffr5+WH//v0YOXIkJkyYgJKSEly9ehX79u3DK6+8AkdHR6Uf57PY29vj0aNH0NTUrPd9EzVpAhFJ1p9//ikAEHbt2iWYm5sL8+bNU1ktQUFBgpqamvDPP/9UaHv06JFgbGws+Pj4CIIgCCUlJYKRkZHQr1+/SreVlZVV7b5Onz4tABAWL15coa20tFS4e/duLY6gorKyMuHRo0dK2VZdmzt3rsA/+dRU8TIWkYRFRkaiWbNmGDhwIIYNG4bIyMhK+927dw9jxowRL/cEBgbi/PnzlY4vuXr1KoYNGwZTU1Po6OigS5cu2LNnzzNrGT16NMrLy7Fly5YKbb/88gvy8vIQEBAAALh79y7y8/PRo0ePSrdlYWFR7b7S0tIAoNL11dXVYWZmJs6PGzcOLVu2rNCvsjEuMpkMkyZNQmRkJDp06ABtbW3s3bsXpqamGD9+fIVt5OfnQ0dHBzNmzABQcczOF198AZlMhr/++qvCuiEhIdDS0sL9+/fFZadOnYKPjw+MjY2hp6eHnj174vjx4xXWPXbsGLp27QodHR20adMGGzZsqOSnRNR0MOwQSVhkZCSGDh0KLS0tjBw5EqmpqThz5oxCn/LycgwaNAibN29GYGAgFi9ejIyMDAQGBlbY3qVLl9C9e3dcuXIFH3/8MVasWAF9fX34+voiOjq62lo8PDzQokULREVFVWiLioqCnp4efH19ATwJM7q6uti7dy9ycnKe+7jt7e3F4y8tLX3u9atz8OBBTJ06FcOHD8fXX3+Ndu3aYciQIdi9ezceP36s0Hf37t0oLi4WL839l7+/P2QyGbZt21ahbdu2bfDy8kKzZs3E/Xp4eCA/Px9z587FkiVLkJubiz59+uD06dPiesnJyfDy8kJ2djbmzZuH8ePHY+7cuc/8fIgkTdWnloiobpw9e1YAIMTFxQmCIAjl5eVCixYthA8//FCh386dOwUAwsqVK8VlZWVlQp8+fQQAwqZNm8Tlffv2FVxcXISioiJxWXl5ufDKK68I7dq1e2ZNM2fOFAAIKSkp4rK8vDxBR0dHGDlypELfOXPmCAAEfX19oX///sLixYuFxMTEGh17eXm50LNnTwGAYGlpKYwcOVJYs2aN8Ndff1XoGxgYKNjb21dYXtllHwCCmpqacOnSJYXlsbGxAgBh7969CssHDBggtG7dWpxPT0+v8DOVy+WCu7u7wnpPL8P98MMP4vG0a9dO8Pb2FsrLy8V+Dx8+FFq1aqVwuc/X11fQ0dFRONbLly8L6urqvIxFTRbP7BBJVGRkJCwtLdG7d28ATy7BDB8+HFu2bEFZWZnYLyYmBpqampgwYYK4TE1NDcHBwQrby8nJwcGDB+Hv748HDx7g7t27uHv3Lu7duwdvb2+kpqbin3/+qbam0aNHA4DC2Z2dO3eiqKhIvIT11Pz58xEVFQU3NzfExsbi008/hbu7Ozp37owrV65Uux+ZTIbY2FgsWrQIzZo1w+bNmxEcHAx7e3sMHz4cubm51a5fnZ49e8LZ2VlhWZ8+fdC8eXNs3bpVXHb//n3ExcVh+PDh1W5v+PDhSExMFC+9AcDWrVuhra2NwYMHAwCSkpKQmpqKUaNG4d69e+LPvrCwEH379sWRI0dQXl6OsrIyxMbGwtfXF3Z2duL2nJyc4O3tXetjJmrsGHaIJKisrAxbtmxB7969kZ6ejuvXr+P69evo1q0bsrKycODAAbHvX3/9BWtra+jp6Sls4793bV2/fh2CIGD27NkwNzdXmObOnQsAyM7OrrYuV1dXdOzYEZs3bxaXRUVFoXnz5pV+GY8cORJHjx7F/fv38dtvv2HUqFE4d+4cBg0ahKKiomr3pa2tjU8//RRXrlzB7du3sXnzZnTv3h3btm3DpEmTql23Oq1ataqwTENDA35+fvj5559RXFwM4Mnt9iUlJc8MO2+++SbU1NTEoCQIArZv347+/fvDyMgIAJCamgoACAwMrPCz//7771FcXIy8vDzcuXMHjx49Qrt27Srsx8HBodbHTNTY8dZzIgk6ePAgMjIysGXLlkoHBEdGRsLLy+u5tlleXg4AmDFjRpVnCWpyW/vo0aPx8ccf4+zZs2jRogUOHTqEd999FxoaVf85MjIyQr9+/dCvXz9oamoiIiICp06dQs+ePWtUu7W1NUaMGAE/Pz906NAB27ZtQ3h4ODQ0NKp80N6/z379m66ubqXLR4wYgQ0bNmD//v3w9fXFtm3b4OjoiE6dOlVbm42NDV577TVs27YNn3zyCU6ePImbN29i2bJlYp+nP/vly5fjpZdeqnQ7BgYGYtAiIkUMO0QSFBkZCQsLC6xZs6ZC265duxAdHY3169dDV1cX9vb2OHToEB4+fKhwduf69esK67Vu3RoAoKmpCU9Pz1rXNnLkSISEhCAqKgr29vYoKyurcAmrOl26dEFERAQyMjKee9+amppwdXVFamoq7t69CysrKzRr1qzSy1qV3SFVHQ8PD1hbW2Pr1q149dVXcfDgQXz66ac1Wnf48OF4//33kZKSgq1bt0JPTw+DBg0S29u0aQPgSeir7mdvbm4OXV1d8UzQv6WkpDzX8RBJiqoHDRGRcj18+FAwNDQU3nrrrUrbjx8/LgAQtmzZIgiCIOzYsaPGA5R79eolmJqaCrdv366w3ezs7BrX6OHhIdjY2AhdunQRWrVqVaG9sLBQOHHiRKXrDhgwQAAg/PHHH1Vu/9q1a5UORr5//75gY2MjNGvWTCgtLRUEQRBWr14tABDOnz8v9rt9+7ZgYGBQ6QDl4ODgKvf7wQcfCPr6+sKXX34pABAuX76s0F7ZAGVBePLcIHV1dWHu3LmCjY2N4O/vr9BeVlYmtGnTRmjXrp3w4MGDCvv998+eA5SJKuKZHSKJ2bNnDx48eIA33nij0vbu3bvD3NwckZGRGD58OHx9ffHyyy9j+vTpuH79OhwdHbFnzx7xlu9/X+ZZs2YNXn31Vbi4uGDChAlo3bo1srKykJCQgL///hvnz5+vUY2jR4/GO++8g9u3b1d69uPhw4d45ZVX0L17d/j4+MDW1ha5ubnYvXs3jh49Cl9fX7i5uVW5/fPnz2PUqFHo378/XnvtNZiamuKff/5BREQEbt++jZUrV0JdXR3Ak8tPs2bNwpAhQzB58mQ8fPgQ69atQ/v27fHHH3/U6HieGj58OFatWoW5c+fCxcUFTk5ONVrPwsICvXv3xpdffokHDx5UGOejpqaG77//Hv3790eHDh0wfvx4/O9//8M///yDQ4cOwcjICHv37gXwZGB3TEwMXnvtNbz//vsoLS3FqlWr0KFDB1y4cOG5jodIMlSdtohIuQYNGiTo6OgIhYWFVfYZN26coKmpKT5J+M6dO8KoUaMEQ0NDwdjYWBg3blyFM0BPpaWlCWPHjhWsrKwETU1N4X//+5/w+uuvCzt27KhxjTk5OYK2tnalZz8E4ckTlL/77jvB19dXsLe3F7S1tQU9PT3Bzc1NWL58uVBcXFzt9rOysoSlS5cKPXv2FKytrQUNDQ2hWbNmQp8+fSqt87fffhM6duwoaGlpCQ4ODsJPP/1U5a3n1Z3ZKS8vF2xtbQUAwqJFiyq0V3VmRxAE4bvvvhMACIaGhlU+lfncuXPC0KFDBTMzM0FbW1uwt7cX/P39hQMHDij0i4+PF9zd3QUtLS2hdevWwvr16/kEZWrSZIIgCKqLWkTUUO3evRtDhgzBsWPHqnySMRFRY8CwQ0R49OiRwl1GZWVl8PLywtmzZ5GZmVnlHUhERI0Bx+wQET744AM8evQIcrkcxcXF2LVrF06cOIElS5Yw6BBRo8czO0SEqKgorFixAtevX0dRURHatm2LiRMnvtDD94iIGgqGHSIiIpI0vi6CiIiIJI1hh4iIiCSNA5Tx5L0zt2/fhqGhYZXvySEiIqKGRRAEPHjwADY2NlBTq/r8DcMOgNu3b8PW1lbVZRAREVEt3Lp1Cy1atKiynWEHgKGhIYAnPywjIyMVV0NEREQ1kZ+fD1tbW/F7vCoMO/j/d/8YGRkx7BARETUyzxqCwgHKREREJGkMO0RERCRpDDtEREqwbt06uLq6ipfD5XI59u/fL7b36tULMplMYXrvvfcUtnHmzBn07dsXJiYmaNasGby9vXH+/Pn6PhQiyeGYHSIiJWjRogWWLl2Kdu3aQRAEREREYPDgwTh37hw6dOgAAJgwYQIWLFggrqOnpyf+u6CgAD4+PnjjjTewdu1alJaWYu7cufD29satW7egqalZ78fUGJWVlaGkpETVZZCSaGpqQl1d/YW3w7BDRKQEgwYNUphfvHgx1q1bh5MnT4phR09PD1ZWVpWuf/XqVeTk5GDBggXiozDmzp0LV1dX/PXXX2jbtm3dHkAjJwgCMjMzkZubq+pSSMlMTExgZWX1Qs/BY9ghIlKysrIybN++HYWFhZDL5eLyyMhI/PTTT7CyssKgQYMwe/Zs8eyOg4MDzMzMEBYWhk8++QRlZWUICwuDk5MTWrZsqaIjaTyeBh0LCwvo6enxAbESIAgCHj58iOzsbACAtbV1rbfFsENEpCTJycmQy+UoKiqCgYEBoqOj4ezsDAAYNWoU7O3tYWNjgwsXLmDWrFlISUnBrl27ADx53tfhw4fh6+uLhQsXAgDatWuH2NhYaGjwT3V1ysrKxKBjZmam6nJIiXR1dQEA2dnZsLCwqPUlLf4GEREpiYODA5KSkpCXl4cdO3YgMDAQ8fHxcHZ2xjvvvCP2c3FxgbW1Nfr27Yu0tDS0adMGjx49QlBQEHr06IHNmzejrKwMX3zxBQYOHIgzZ86If/SpoqdjdP49Boqk4+nnWlJSwrBDRKRqWlpa4tgad3d3nDlzBl9//TU2bNhQoW+3bt0AANevX0ebNm0QFRWFGzduICEhQXzHT1RUFJo1a4aff/4ZI0aMqL8DaaR46UqalPG58tZzIqI6Ul5ejuLi4krbkpKSAPz/OISHDx9CTU1N4Q/70/ny8vI6r5VIyhh2iIiUICQkBEeOHMGNGzeQnJyMkJAQHD58GAEBAUhLS8PChQuRmJiIGzduYM+ePRg7diw8PDzg6uoKAOjXrx/u37+P4OBgXLlyBZcuXcL48eOhoaGB3r17q/joqLYOHz4MmUxW53eJjRs3Dr6+vnW6j8aMYYeISAmys7MxduxYODg4oG/fvjhz5gxiY2PRr18/aGlp4ffff4eXlxccHR0xffp0+Pn5Ye/eveL6jo6O2Lt3Ly5cuAC5XI7XXnsNt2/fRkxMzAvdhULAnTt3MHHiRNjZ2UFbWxtWVlbw9vbG8ePH63zfr7zyCjIyMmBsbFzn+6ov48aNg0wmw9KlSxWW7969+7kvObVs2RIrV65UYnWV45gdIiIlCAsLq7LN1tYW8fHxz9xGv3790K9fP2WWRQD8/Pzw+PFjREREoHXr1sjKysKBAwdw7969Wm9TEASUlZU98045LS2tKp+t1NA9fvwYWlpalbbp6Ohg2bJlePfdd9GsWbN6ruz58cwOERFJVm5uLo4ePYply5ahd+/esLe3x8svv4yQkBC88cYbAIAbN25AJpOJ46ierieTyXD48GEA/385av/+/XB3d4e2tjY2btwImUyGq1evKuzzq6++Qps2bRTWy83NRX5+PnR1dRVeIwIA0dHRMDQ0xMOHDwEAt27dgr+/P0xMTGBqaorBgwfjxo0bYv+ysjJMmzYNJiYmMDMzw0cffQRBEJ75s9i5cyc6dOgAbW1ttGzZEitWrFBob9myJRYuXIixY8fCyMhI4Q7C//L09ISVlRVCQ0Nrvc9evXrhr7/+wtSpU8VXqNQVhh0iIpIsAwMDGBgYYPfu3VUOFn8eH3/8MZYuXYorV65g2LBh6NKlCyIjIxX6REZGYtSoURXWNTIywuuvv46oqKgK/X19faGnp4eSkhJ4e3vD0NAQR48exfHjx2FgYAAfHx88fvwYALBixQqEh4dj48aNOHbsGHJychAdHV1t3YmJifD398eIESOQnJyMefPmYfbs2QgPD1fo98UXX6BTp044d+4cZs+eXeX21NXVsWTJEqxatQp///13rfa5a9cutGjRAgsWLEBGRgYyMjKqPYYXwctYRET/4T7zB1WXoBSJy8equgSV09DQQHh4OCZMmID169ejc+fO6NmzJ0aMGCEODn8eCxYsULjUGBAQgNWrV4sPgrx27RoSExPx008/Vbp+QEAAxowZg4cPH0JPTw/5+fn45ZdfxLCydetWlJeX4/vvvxfPdGzatAkmJiY4fPgwvLy8sHLlSoSEhGDo0KEAgPXr1yM2Nrbaur/88kv07dtXDDDt27fH5cuXsXz5cowbN07s16dPH0yfPr1GP4shQ4bgpZdewty5cyu9jPusfZqamkJdXR2GhoZ1fqmPZ3aIiEjS/Pz8cPv2bezZswc+Pj44fPgwOnfuXOGsRk106dJFYX7EiBG4ceMGTp48CeDJWZrOnTvD0dGx0vUHDBgATU1N7NmzB8CTyzxGRkbw9PQEAJw/fx7Xr1+HoaGheFbK1NQURUVFSEtLQ15eHjIyMsTnNAFPAt1/6/qvK1euoEePHgrLevTogdTUVJSVlVV5fM+ybNkyRERE4MqVK7XeZ31g2CEiIsnT0dFBv379MHv2bJw4cQLjxo3D3LlzAUB8iOO/x71U9eZ0fX19hXkrKyv06dNHvDQVFRWFgICAKuvQ0tLCsGHDFPoPHz5cHOhcUFAAd3d3JCUlKUzXrl2r9NKYsv33+J7Fw8MD3t7eCAkJqaOKlEOlYWfdunVwdXWFkZERjIyMIJfLFQZu9erVSxy09HR67733FLZx8+ZNDBw4EHp6erCwsMDMmTNRWlpa34dCRESNiLOzMwoLCwEA5ubmAKAwZuTfg5WfJSAgAFu3bkVCQgL+/PPPZz7tOiAgADExMbh06RIOHjyoEI46d+6M1NRUWFhYoG3btgqTsbExjI2NYW1tjVOnTonrlJaWIjExsdp9Ojk5VbjV/vjx42jfvn2tX8Hw1NKlS7F3714kJCQ89z61tLTq5SyPSsNOixYtsHTpUiQmJuLs2bPo06cPBg8ejEuXLol9JkyYIA5cysjIwOeffy62lZWVYeDAgXj8+DFOnDiBiIgIhIeHY86cOao4HCIiamDu3buHPn364KeffsKFCxeQnp6O7du34/PPP8fgwYMBPHnZZPfu3cWBx/Hx8fjss89qvI+hQ4fiwYMHmDhxInr37g0bG5tq+3t4eMDKygoBAQFo1aqVwiWpgIAANG/eHIMHD8bRo0eRnp6Ow4cPY/LkyeJA4A8//BBLly7F7t27cfXqVbz//vvPfGjh9OnTceDAASxcuBDXrl1DREQEVq9ejRkzZtT4OKvi4uKCgIAAfPPNN8+9z5YtW+LIkSP4559/cPfu3ReupSoqDTuDBg3CgAED0K5dO7Rv3x6LFy+GgYGBeO0TePICMCsrK3EyMjIS23777TdcvnwZP/30E1566SX0798fCxcuxJo1a8RR60RE1HQZGBigW7du+Oqrr+Dh4YGOHTti9uzZmDBhAlavXi3227hxI0pLS+Hu7o4pU6Zg0aJFNd6HoaEhBg0ahPPnz1d7CespmUyGkSNHVtpfT08PR44cgZ2dHYYOHQonJycEBQWhqKhI/P6bPn06xowZg8DAQMjlchgaGmLIkCHV7rNz587Ytm0btmzZgo4dO2LOnDlYsGCBwuDkF7FgwYIKrzWpyT4XLFiAGzduoE2bNuIZtrogE2pyc349KCsrw/bt2xEYGIhz587B2dkZvXr1wqVLlyAIAqysrDBo0CDMnj1bfAPqnDlzsGfPHoXTjenp6WjdujX++OMPuLm51Wjf+fn5MDY2Rl5enkKYIqKmiXdjNS5FRUVIT09Hq1atoKOjo+pySMmq+3xr+v2t8lvPk5OTIZfLUVRUBAMDA0RHR8PZ2RkAMGrUKNjb28PGxgYXLlzArFmzkJKSgl27dgEAMjMzYWlpqbC9p/OZmZlV7rO4uFjheQv5+fnKPiwiIiJqIFQedhwcHJCUlIS8vDzs2LEDgYGBiI+Ph7Ozs8LTG11cXGBtbY2+ffsiLS1NfDplbYSGhmL+/PnKKJ+IiIgaOJXfeq6lpYW2bdvC3d0doaGh6NSpE77++utK+z4dxHX9+nUAT275y8rKUujzdL66BxSFhIQgLy9PnG7duqWMQyEiIqIGSOVh57/Ky8urfKT307E5T98ALJfLkZycjOzsbLFPXFwcjIyMxEthldHW1hZvd386ERERkTSp9DJWSEgI+vfvDzs7Ozx48ABRUVE4fPgwYmNjkZaWhqioKAwYMABmZma4cOECpk6dCg8PD/ER315eXnB2dsaYMWPw+eefIzMzE5999hmCg4Ohra2tykMjIiKiBkKlYSc7Oxtjx45FRkYGjI2N4erqitjYWPTr1w+3bt3C77//jpUrV6KwsBC2trbw8/NTePaBuro69u3bh4kTJ0Iul0NfXx+BgYFYsGCBCo+KiIiIGhKVhp3KXhz2lK2tLeLj45+5DXt7e/z666/KLIuIiIgkpMGN2SEiIiJSJoYdIiIikjSGHSIiIpI0lT9UkIiIqDGq79eK1Ob1H+PGjUNERARCQ0Px8ccfi8t3796NIUOGoIG8MarO8cwOERGRhOno6GDZsmW4f/++qktRGYYdIiIiCfP09ISVlRVCQ0Or7LNz50506NAB2traaNmyJVasWFGPFdY9hh0iIiIJU1dXx5IlS7Bq1Sr8/fffFdoTExPh7++PESNGIDk5GfPmzcPs2bMRHh5e/8XWEYYdIiIiiRsyZAheeuklzJ07t0Lbl19+ib59+2L27Nlo3749xo0bh0mTJmH58uUqqLRuMOwQERE1AcuWLUNERASuXLmisPzKlSvo0aOHwrIePXogNTUVZWVl9VlinWHYISIiagI8PDzg7e2NkJAQVZdS73jrORERUROxdOlSvPTSS3BwcBCXOTk54fjx4wr9jh8/jvbt20NdXb2+S6wTDDtERERNhIuLCwICAvDNN9+Iy6ZPn46uXbti4cKFGD58OBISErB69WqsXbtWhZUqFy9jERERNSELFixAeXm5ON+5c2ds27YNW7ZsQceOHTFnzhwsWLAA48aNU12RSsYzO0RERLVQmyca17fKbh9v2bIliouLFZb5+fnBz8+vnqqqfzyzQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLG10UQERHVws0FLvW6P7s5yTXuKwgC+vXrB3V1dcTGxiq0rV27Fp988gkuXryIFi1aKLvMBolndoiIiCRGJpNh06ZNOHXqFDZs2CAuT09Px0cffYRVq1Y1maADMOwQERFJkq2tLb7++mvMmDED6enpEAQBQUFB8PLygpubG/r37w8DAwNYWlpizJgxuHv3rrjujh074OLiAl1dXZiZmcHT0xOFhYUqPJoXw7BDREQkUYGBgejbty/eeustrF69GhcvXsSGDRvQp08fuLm54ezZs4iJiUFWVhb8/f0BABkZGRg5ciTeeustXLlyBYcPH8bQoUMhCIKKj6b2OGaHiIhIwr799lt06NABR44cwc6dO7Fhwwa4ublhyZIlYp+NGzfC1tYW165dQ0FBAUpLSzF06FDY29sDAFxc6nd8krLxzA4REZGEWVhY4N1334WTkxN8fX1x/vx5HDp0CAYGBuLk6OgIAEhLS0OnTp3Qt29fuLi44M0338R3332H+/fvq/goXgzDDhERkcRpaGhAQ+PJxZyCggIMGjQISUlJClNqaio8PDygrq6OuLg47N+/H87Ozli1ahUcHByQnp6u4qOoPYYdIiKiJqRz5864dOkSWrZsibZt2ypM+vr6AJ7czdWjRw/Mnz8f586dg5aWFqKjo1Vcee0x7BARETUhwcHByMnJwciRI3HmzBmkpaUhNjYW48ePR1lZGU6dOoUlS5bg7NmzuHnzJnbt2oU7d+7AyclJ1aXXGgcoExERNSE2NjY4fvw4Zs2aBS8vLxQXF8Pe3h4+Pj5QU1ODkZERjhw5gpUrVyI/Px/29vZYsWIF+vfv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bFy5cgW6urpo164dtLW1lV0fERER0QupVdh5ysDAAF27dlVWLURERERKV6sBykRERESNBcMOERERSRrDDhEREUkaww4RERFJGsMOERERSRrDDhEREUkaww4RERFJGsMOERERSRrDDhEREUkaww4RERFJGsMOERERSZpKw86RI0cwaNAg2NjYQCaTYffu3Qrt48aNg0wmU5h8fHwU+uTk5CAgIABGRkYwMTFBUFAQCgoK6vEoiIiIqCFTadgpLCxEp06dsGbNmir7+Pj4ICMjQ5w2b96s0B4QEIBLly4hLi4O+/btw5EjR/DOO+/UdelERETUSLzQW89fVP/+/dG/f/9q+2hra8PKyqrStitXriAmJgZnzpxBly5dAACrVq3CgAED8MUXX8DGxkbpNRMREVHj0uDH7Bw+fBgWFhZwcHDAxIkTce/ePbEtISEBJiYmYtABAE9PT6ipqeHUqVNVbrO4uBj5+fkKExEREUlTgw47Pj4++OGHH3DgwAEsW7YM8fHx6N+/P8rKygAAmZmZsLCwUFhHQ0MDpqamyMzMrHK7oaGhMDY2FidbW9s6PQ4iIiJSHZVexnqWESNGiP92cXGBq6sr2rRpg8OHD6Nv37613m5ISAimTZsmzufn5zPwEBERSVSDPrPzX61bt0bz5s1x/fp1AICVlRWys7MV+pSWliInJ6fKcT7Ak3FARkZGChMRERFJU6MKO3///Tfu3bsHa2trAIBcLkdubi4SExPFPgcPHkR5eTm6deumqjKJiIioAVHpZayCggLxLA0ApKenIykpCaampjA1NcX8+fPh5+cHKysrpKWl4aOPPkLbtm3h7e0NAHBycoKPjw8mTJiA9evXo6SkBJMmTcKIESN4JxYREREBUPGZnbNnz8LNzQ1ubm4AgGnTpsHNzQ1z5syBuro6Lly4gDfeeAPt27dHUFAQ3N3dcfToUWhra4vbiIyMhKOjI/r27YsBAwbg1VdfxbfffquqQyIiIqIGRqVndnr16gVBEKpsj42NfeY2TE1NERUVpcyyiIiISEIa1ZgdIiIioufFsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0REpAQPHjzAlClTYG9vD11dXbzyyis4c+aM2D5v3jw4OjpCX18fzZo1g6enJ06dOqXCipsOhh0iIiIlePvttxEXF4cff/wRycnJ8PLygqenJ/755x8AQPv27bF69WokJyfj2LFjaNmyJby8vHDnzh0VVy59Kg07R44cwaBBg2BjYwOZTIbdu3crtAuCgDlz5sDa2hq6urrw9PREamqqQp+cnBwEBATAyMgIJiYmCAoKQkFBQT0eBRERNXWPHj3Czp078fnnn8PDwwNt27bFvHnz0LZtW6xbtw4AMGrUKHh6eqJ169bo0KEDvvzyS+Tn5+PChQsqrl76VBp2CgsL0alTJ6xZs6bS9s8//xzffPMN1q9fj1OnTkFfXx/e3t4oKioS+wQEBODSpUuIi4vDvn37cOTIEbzzzjv1dQhEREQoLS1FWVkZdHR0FJbr6uri2LFjFfo/fvwY3377LYyNjdGpU6f6KrPJ0lDlzvv374/+/ftX2iYIAlauXInPPvsMgwcPBgD88MMPsLS0xO7duzFixAhcuXIFMTExOHPmDLp06QIAWLVqFQYMGIAvvvgCNjY29XYsRETUdBkaGkIul2PhwoVwcnKCpaUlNm/ejISEBLRt21bst2/fPowYMQIPHz6EtbU14uLi0Lx5cxVW3jQ02DE76enpyMzMhKenp7jM2NgY3bp1Q0JCAgAgISEBJiYmYtABAE9PT6ipqVU76Ku4uBj5+fkKExER0Yv48ccfIQgC/ve//0FbWxvffPMNRo4cCTW1//+q7d27N5KSknDixAn4+PjA398f2dnZKqy6aWiwYSczMxMAYGlpqbDc0tJSbMvMzISFhYVCu4aGBkxNTcU+lQkNDYWxsbE42draKrl6IiJqatq0aYP4+HgUFBTg1q1bOH36NEpKStC6dWuxj76+Ptq2bYvu3bsjLCwMGhoaCAsLU2HVTUODDTt1KSQkBHl5eeJ069YtVZdEREQSoa+vD2tra9y/fx+xsbHiUIzKlJeXo7i4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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 统计每个年龄段surived和not surived 的人数\n",
    "ax=sns.countplot(data = temp, x = 'Age',hue= 'Survived')  \n",
    "# data：df或array或array列表，用于绘图的数据集，x或y缺失时，data参数为数据集，同时x或y不可缺少，必须要有其中一个\n",
    "# x： x轴上的条形图，以x标签划分统计个数\n",
    "# hue：在x或y标签划分的同时，再以hue标签划分统计个数\n",
    "ax.bar_label(ax.containers[0]);\n",
    "ax.bar_label(ax.containers[1]);\n",
    "plt.legend(title='Survived or Not',loc='upper right',labels=['No','Yes']);\n",
    "plt.title('Age VS Survived')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "52916764",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:01:27.477134Z",
     "start_time": "2022-04-27T07:01:27.459457Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(32.204207968574636)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 票价fare\n",
    "# 票价的平均值\n",
    "temp['Fare'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "b65a6bfd",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:01:30.887222Z",
     "start_time": "2022-04-27T07:01:30.419200Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "temp['Fare'].hist(bins=20)  # Pandas的画图函数：df.hist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "bbbc38a0",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:01:34.042756Z",
     "start_time": "2022-04-27T07:01:32.830800Z"
    },
    "editable": true,
    "slideshow": {
     "slide_type": ""
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGxCAYAAACEFXd4AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAOZVJREFUeJzt3XlclWX+//H3wQURWUJZFffccjczypSSBHUcLX8tZqbF6GSio5Q5NmWaFVPmUn4dnfqaZGlNm5rWmCuYu1FoLqGSpSZoqYCgIsv1+6Ov98zJHYFzuH09H4/78eBc13Xf9+c+N3De517OcRhjjAAAAGzKw9UFAAAAlCXCDgAAsDXCDgAAsDXCDgAAsDXCDgAAsDXCDgAAsDXCDgAAsDXCDgAAsLXKri7AHRQXF+vw4cPy8fGRw+FwdTkAAOAKGGN08uRJhYWFycPj4sdvCDuSDh8+rPDwcFeXAQAASuDgwYOqU6fORfsJO5J8fHwk/fZk+fr6urgaAABwJXJychQeHm69jl8MYUeyTl35+voSdgAAqGAudwkKFygDAABbc2nYSUhIUMeOHeXj46OgoCD17dtXaWlpTmMiIyPlcDicpscff9xpzIEDB9SrVy9Vr15dQUFBGjNmjAoLC8tzUwAAgJtyadhJTk7W8OHDtWnTJq1YsUIFBQXq3r278vLynMYNGTJEGRkZ1vTqq69afUVFRerVq5fOnj2rDRs26J133lFiYqLGjx9f3psDlLsrecNwjjFGPXr0kMPh0KJFiy445tixY6pTp44cDoeysrLKrnAAKEcuvWZn2bJlTo8TExMVFBSklJQUdenSxWqvXr26QkJCLriM5cuXa9euXVq5cqWCg4PVtm1bTZo0SWPHjtWECRNUtWrVMt0GwJXOvWHo2LGjCgsL9cwzz6h79+7atWuXvL29ncZOnz79sue1Y2Nj1bp1a/38889lWTYAlCu3umYnOztbkhQQEODUPn/+fNWqVUstW7bUuHHjdOrUKatv48aNatWqlYKDg6226Oho5eTkaOfOneVTOOAiy5Yt0+DBg3XTTTepTZs2SkxM1IEDB5SSkuI0LjU1VVOmTNHbb7990WXNmjVLWVlZeuqpp8q6bAAoV25zN1ZxcbFGjRql22+/XS1btrTaH3roIdWrV09hYWHavn27xo4dq7S0NH366aeSpMzMTKegI8l6nJmZecF15efnKz8/33qck5NT2psDuMSF3jCcOnVKDz30kGbOnHnRI6S7du3SCy+8oM2bN+uHH34ol1oBoLy4TdgZPny4duzYoXXr1jm1Dx061Pq5VatWCg0NVbdu3ZSenq5GjRqVaF0JCQmaOHHiNdULuJuLvWEYPXq0brvtNvXp0+eC8+Xn56t///6aPHmy6tatS9gBYDtucRorLi5OS5cu1Zo1ay75CYiS1KlTJ0nSvn37JEkhISE6cuSI05hzjy/2LnbcuHHKzs62poMHD17rJgAud+4NwwcffGC1ffbZZ1q9erWmT59+0fnGjRun5s2b6+GHHy6HKgGg/Lk07BhjFBcXp4ULF2r16tVq0KDBZedJTU2VJIWGhkqSIiIi9N133+no0aPWmBUrVsjX11ctWrS44DI8PT2tDxDkgwRhBxd7w7B69Wqlp6fL399flStXVuXKvx3M7devnyIjI60xH330kdXfrVs3SVKtWrX0/PPPl/u2AEBpcxhjjKtW/sQTT2jBggVavHixmjZtarX7+fnJy8tL6enpWrBggXr27KmaNWtq+/btGj16tOrUqaPk5GRJv9163rZtW4WFhenVV19VZmamBg4cqD/96U96+eWXr6iOnJwc+fn5KTs7m+CDCsUYoxEjRmjhwoVKSkrSjTfe6NSfmZmpX3/91amtVatWev3119W7d281aNBA6enpOn36tNW/detWPfbYY9qwYYMaNWqkoKCgctkWALhaV/r67dKwc7HbYOfOnavBgwfr4MGDevjhh7Vjxw7l5eUpPDxc99xzj5599lmnjfrpp580bNgwJSUlydvbW4MGDdLf//53613s5RB2UFFd7g3DhTgcDi1cuFB9+/a9YH9SUpLuvPNOnThxQv7+/mVQNQCUjit9/XbpBcqXy1nh4eHWEZxLqVevnr744ovSKguoMGbNmiVJ1impc869YQAAuNHdWACuXkkOzF5unsjIyBItFwDclVvcjQUAAFBWCDsAAMDWOI0FXIEOY+a5ugT8n5TJj7i6BAAVDEd2AACArRF2AACArRF2AACArRF2AACArRF2AACArRF2AACArRF2AACArRF2AACArRF2AACArRF2AACArRF2AACArRF2AACArRF2bCQhIUEdO3aUj4+PgoKC1LdvX6WlpVn9x48f14gRI9S0aVN5eXmpbt26GjlypLKz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NUnS4cOHdfjwYb322mvasWOHEhMTtWzZMsXGxpbnZriFyq4uAAAAnK9Hjx7q0aPHRfv/9re/qWfPnnr11VettkaNGlk/t2zZUp988olT30svvaSHH35YhYWFqlz5+okAHNkBAKCCKS4u1ueff64mTZooOjpaQUFB6tSp0wVPdf237Oxs+fr6XldBRyLsAABQ4Rw9elS5ubn6+9//rpiYGC1fvlz33HOP7r33XiUnJ19wnl9//VWTJk3S0KFDy7la17u+oh0AADZQXFwsSerTp49Gjx4tSWrbtq02bNig2bNnq2vXrk7jc3Jy1KtXL7Vo0UITJkwo73JdjiM7AABUMLVq1VLlypXVokULp/bmzZtbd2Odc/LkScXExMjHx0cLFy5UlSpVyrNUt0DYAQCggqlatao6duyotLQ0p/Y9e/aoXr161uOcnBx1795dVatW1WeffWbdqXW94TQWAABuKDc3V/v27bMe79+/X6mpqQoICFDdunU1ZswYPfDAA+rSpYvuvPNOLVu2TEuWLFFSUpKk/wSdU6dO6b333lNOTo5ycnIkSYGBgapUqZIrNsslCDsAALihr7/+Wnfeeaf1OD4+XpI0aNAgJSYm6p577tHs2bOVkJCgkSNHqmnTpvrkk0/UuXNnSdI333yjzZs3S5IaN27stOz9+/erfv365bMhboCwAwCAG4qMjJQx5pJjHnvsMT322GMlnv96wTU7AADA1gg7AADA1jiNBQC4rnUYM8/VJeD/pEx+pEyWy5EdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABgay4NO2vXrlXv3r0VFhYmh8OhRYsWOfUPHjxYDofDaYqJiXEac/z4cQ0YMEC+vr7y9/dXbGyscnNzy3ErAACAO3Np2MnLy1ObNm00c+bMi46JiYlRRkaGNb3//vtO/QMGDNDOnTu1YsUKLV26VGvXrtXQoUPLunQAAFBBVHblynv06KEePXpccoynp6dCQkIu2Ld7924tW7ZMW7du1c033yxJmjFjhnr27KnXXntNYWFhpV4zAACoWNz+mp2kpCQFBQWpadOmGjZsmI4dO2b1bdy4Uf7+/lbQkaSoqCh5eHho8+bNF11mfn6+cnJynCYAAGBPbh12YmJiNG/ePK1a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F293c6G/r+Li4lJb5n//HymJ63W/EXbcXPPmzfXJJ5/IGGP9kq9fv14+Pj6qU6eOJOmOO+7QyZMnNW3aNCvYREZG6u9//7tOnDihJ598ssTrX79+vfr06WNd4FxcXKw9e/aoRYsWl5yvffv2+uSTT1S/fn1Vrsyv2e9d7vlp1KiRqlSpos2bN1v/SE6cOKE9e/ZcNLympKSouLhYU6ZMkYfHb/cefPjhh2W3Ef9n/fr1+sc//qGePXtKkg4ePHhFF6K3b99eaWlpaty4cVmXeM0KCws1b948TZkyRd27d3fq69u3r95//309/vjjCg8P17/+9S/9+9//1n333We9SLVo0UKenp46cODAVb/5WL9+vQYPHqx77rlH0m8vOj/++KPV37RpUxUWFurbb7+1jrDu27dPJ06csMa0b99emZmZqly5surXr1+CZ+Dq67qY9u3ba9euXRViv5elpk2b6r333lN+fr4VeLdu3Vrm671e9xt3Y7mR7OxspaamOk1Dhw7VwYMHNWLECH3//fdavHixnn/+ecXHx1svaDfccINat26t+fPnKzIyUpLUpUsXffPNN5d8cbwSN954o1asWKENGzZo9+7d+vOf/6wjR45cdr7hw4fr+PHj6t+/v7Zu3ar09HR9+eWXevTRR607x65nl3t+atSoodjYWI0ZM0arV6/Wjh07NHjwYGufX0jjxo1VUFCgGTNm6IcfftC7776r2bNnl/m23HjjjXr33Xe1e/dubd68WQMGDJCXl9dl5xs/frzmzZuniRMnaufOndq9e7c++OADPfvss2Ve89VaunSpTpw4odjYWLVs2dJp6tevn+bMmSPpt7uyZs+erRUrVmjAgAHW/D4+Pnrqqac0evRovfPOO0pPT9c333yjGTNm6J133rnkum+88UZ9+umnSk1N1bZt2/TQQw85vatv1qyZoqKiNHToUG3ZskXffvuthg4dKi8vL+sNUlRUlCIiItS3b18tX75cP/74ozZs2KC//e1v+vrrr0v0nFyurosZO3asNmzYoLi4OKWmpmrv3r1avHjxdfdFzueer6FDh2r37t368ssv9dprr0mS02ULpe163W+EHTeSlJSkdu3aOU2TJk3SF198oS1btqhNmzZ6/PHHFRsbe94LQteuXVVUVGSFnYCAALVo0UIhISGXvc7jUp599lm1b99e0dHRioyMVEhIiPr27XvZ+cLCwrR+/XoVFRWpe/fuatWqlUaNGiV/f/9LvmBfL67k+Zk8ebLuuOMO9e7dW1FRUercufN510b9tzZt2mjq1Kl65ZVX1LJlS82fP18JCQllvi1z5szRiRMn1L59ew0cOFAjR45UUFDQZeeLjo7W0qVLtXz5cnXs2FG33nqrpk2bpnr16pV5zVdrzpw5ioqKuuCHsvXr109ff/21tm/frgEDBmjXrl2qXbu2br/9dqdxkyZN0nPPPaeEhAQ1b97c+lDCBg0aXHLdU6dO1Q033KDbbrtNvXv3VnR0tNP1OZI0b948BQcHq0uXLrrnnns0ZMgQ+fj4WKcDHQ6HvvjiC3Xp0kWPPvqomjRpogcffFA//fSTdS3Z1bqSui6kdevWSk5O1p49e3THHXeoXbt2Gj9+vNPpweuBr6+vlixZotTUVLVt21Z/+9vfNH78eEllexr3et1vfOs5ANjMoUOHFB4erpUrV6pbt26uLgdXaP78+Xr00UeVnZ19RUdHceW4mAIAKrjVq1crNzdXrVq1UkZGhp5++mnVr19fXbp0cXVpuIR58+apYcOGql27trZt26axY8fq/vvvJ+iUAc4nXEfOfVrvhaaXX37Z1eXBDVzs96NGjRr66quvXF0eLqKgoEDPPPOMbrrpJt1zzz0KDAxUUlLSeXcGXcxNN9100f3+37cao3RlZmbq4YcfVvPmzTV69Gjdd999evPNN694fvbbleM01nXk559/1unTpy/YFxAQoICAgHKuCO7mUre8165dm3ecNvXTTz9d9PvKgoOD+VJgN8V+u3KEHQAAYGucxgIAALZG2AEAALZG2AEAALZG2AEAALZG2AEAALZG2AFQYQwePFgOh+O8qSTfEg/g+sEnKAOoUGJiYjR37lyntsDAwKtaRlFRkRwOB9/TBlwn+EsHUKF4enoqJCTEaXr99dfVqlUreXt7Kzw8XE888YRyc3OteRITE+Xv76/PPvtMLVq0kKenpw4cOKD8/Hw99dRTql27try9vdWpUyclJSW5buMAlAnCDoAKz8PDQ2+88YZ27typd955R6tXr9bTTz/tNObUqVN65ZVX9L//+7/auXOngoKCFBcXp40bN+qDDz7Q9u3bdd999ykmJkZ79+510ZYAKAt8gjKACmPw4MF67733VK1aNautR48e+uijj5zGffzxx3r88cf166+/SvrtyM6jjz6q1NRUtWnTRpJ04MABNWzYUAcOHFBYWJg1b1RUlG655Ra+Lw6wEa7ZAVCh3HnnnZo1a5b12NvbWytXrlRCQoK+//575eTkqLCwUGfOnNGpU6dUvXp1SVLVqlXVunVra77vvvtORUVFatKkidPy8/PzVbNmzfLZGADlgrADoELx9vZW48aNrcc//vij/vCHP2jYsGF66aWXFBAQoHXr1ik2NlZnz561wo6Xl5ccDoc1X25uripVqqSUlBRVqlTJaR01atQon40BUC4IOwAqtJSUFBUXF2vKlCnW3VUffvjhZedr166dioqKdPToUd1xxx1lXSYAF+ICZQAVWuPGjVVQUKAZM2bohx9+0LvvvqvZs2dfdr4mTZpowIABeuSRR/Tpp59q//792rJlixISEvT555+XQ+UAygthB0CF1qZNG02dOlWvvPKKWrZsqfnz5yshIeGK5p07d64eeeQRPfnkk2ratKn69u2rrVu3qm7dumVcNYDyxN1YAADA1jiyAwAAbI2wAwAAbI2wAwAAbI2wAwAAbI2wAwAAbI2wAwAAbI2wAwAAbI2wAwAAbI2wAwAAbI2wAwAAbI2wAwAAbI2wAwAAbO3/A0901RrVbsVHAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 根据票价，分为四个分段 \n",
    "temp['Fare'] = pd.cut(temp['Fare'], bins=[0,8,16,32,110], labels=['Low_fare','median_fare','Average_fare','high_fare'])\n",
    "ax = sns.countplot(data=temp, x='Fare')\n",
    "ax.bar_label(ax.containers[0]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "a7a14e4a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T06:52:33.768934Z",
     "start_time": "2022-04-27T06:52:33.254281Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 各个票价分段，存活和死亡的人数\n",
    "ax = sns.countplot(data=temp, x='Fare',hue='Survived')\n",
    "ax.bar_label(ax.containers[0]);\n",
    "ax.bar_label(ax.containers[1]);\n",
    "plt.legend(title='Survived or Not', loc='upper right', labels=['No', 'Yes']);\n",
    "plt.title('Fare Vs Survived')\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "f2f9cce7",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:01:35.549838Z",
     "start_time": "2022-04-27T07:01:35.539340Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.int64(687)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Cabin座位信息\n",
    "nullCabin = temp.Cabin.isna().sum()\n",
    "nullCabin"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "d8a254e1",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:01:37.321794Z",
     "start_time": "2022-04-27T07:01:37.310060Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0       NaN\n",
       "1       C85\n",
       "2       NaN\n",
       "3      C123\n",
       "4       NaN\n",
       "       ... \n",
       "886     NaN\n",
       "887     B42\n",
       "888     NaN\n",
       "889    C148\n",
       "890     NaN\n",
       "Name: Cabin, Length: 891, dtype: object"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "temp['Cabin']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "381544ac",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:01:37.810423Z",
     "start_time": "2022-04-27T07:01:37.801999Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'77.1% Null Values'"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 座位信息缺失严重\n",
    "str(round(nullCabin/(len(temp))*100,2))+\"% Null Values\"\n",
    "# 有这么多空值，所以最好放弃它。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "877fd54c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:01:38.330627Z",
     "start_time": "2022-04-27T07:01:38.320124Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([3, 1, 2])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 仓位等级 Pclass : Passenger Class\n",
    "temp.Pclass.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "5ec834bf",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:01:39.203432Z",
     "start_time": "2022-04-27T07:01:38.879217Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = sns.countplot(data=temp,x='Pclass');\n",
    "ax.bar_label(ax.containers[0]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "692ac14c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:01:39.959469Z",
     "start_time": "2022-04-27T07:01:39.482502Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGwCAYAAABPSaTdAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAPixJREFUeJzt3XtYVWXe//HPBgRRTqLihhHwlCKKJ3KUbHw8EIiOaVqmMYrlaBlWSpnDTB7SCg9llplWjweaJMsKS0vN0cRUMmXCs6YOhiWIhwRFBYX9+8PH/WuPxzhtWLxf17Wui73ue631XbFHPnOve61lslgsFgEAABiUg70LAAAAKE+EHQAAYGiEHQAAYGiEHQAAYGiEHQAAYGiEHQAAYGiEHQAAYGhO9i6gMiguLtbx48fl7u4uk8lk73IAAMAdsFgsOnfunPz8/OTgcPPxG8KOpOPHj8vf39/eZQAAgBI4duyYGjZseNN2wo4kd3d3SVf/Y3l4eNi5GgAAcCfy8vLk7+9v/Tt+M4QdyXrpysPDg7ADAEAVc7spKExQBgAAhkbYAQAAhkbYAQAAhsacnTtUXFyswsJCe5eBMlKjRg05OjrauwwAZWD+/PmaP3++jh49Kklq1aqVJk2apKioKB09elSNGze+4XYff/yxHnroIe3cuVPTp0/X5s2bderUKTVq1EhPPPGEnnnmmQo8C5Qnws4dKCwsVEZGhoqLi+1dCsqQl5eXzGYzz1YCqriGDRtq+vTpuuuuu2SxWJSYmKh+/frphx9+UFBQkLKysmz6v/vuu5o1a5aioqIkSWlpafLx8dEHH3wgf39/bd26VaNGjZKjo6PGjBljj1NCGTNZLBaLvYuwt7y8PHl6eio3N/e6u7EsFosyMzN1+fLl2z60CFWDxWLRhQsXlJOTIy8vL/n6+tq7JABlzNvbW7NmzdKIESOua2vfvr06dOighQsX3nT72NhY7d+/Xxs2bCjPMlFKt/r7/VuM7NzGlStXdOHCBfn5+alWrVr2LgdlxNXVVZKUk5MjHx8fLmkBBlFUVKTly5crPz9fYWFh17WnpaUpPT1d8+bNu+V+cnNz5e3tXV5looIRdm6jqKhIkuTs7GznSlDWroXXy5cvE3aAKm737t0KCwvTpUuX5ObmpuTkZAUHB1/Xb+HChWrZsqXuueeem+5r69at+uijj/Tll1+WZ8moQFyTuUPM6zAefqeAcbRo0ULp6enatm2bRo8erZiYGO3bt8+mz8WLF5WUlHTDS1vX7NmzR/369dPkyZMVERFR3mWjgjCyAwCo8pydndWsWTNJUmhoqLZv36433nhD77zzjrXPJ598ogsXLmjYsGE33Me+ffvUs2dPjRo1Si+88EKF1I2KwcgOAMBwiouLVVBQYLNu4cKFuv/++1W/fv3r+u/du1fdu3dXTEyMXn755YoqExWEkZ0qauPGjerevbt+/fVXeXl5ldtxhg8frrNnz2rFihXldgwAKI34+HhFRUUpICBA586dU1JSkjZu3Ki1a9da+xw+fFibNm3SV199dd32e/bsUY8ePRQZGam4uDhlZ2dLkhwdHW8YjFD1MLJTCidPntTo0aMVEBAgFxcXmc1mRUZGasuWLeV+7HvuuUdZWVny9PQs92NVlOHDh8tkMmn69Ok261esWPG759c0atRIc+bMKcPqAFRWOTk5GjZsmFq0aKGePXtq+/btWrt2re677z5rn0WLFqlhw4Y3nIfzySef6OTJk/rggw/k6+trXTp27FiRp4FyxMhOKQwcOFCFhYVKTExUkyZNdOLECa1fv16nT58u8T4tFouKiork5HTrX42zs7PMZnOJj2NPhYWFN727rWbNmpoxY4Yef/xx1alTp4IrA1AV3ep5Ode88soreuWVV27YNmXKFE2ZMqWMq0JlwshOCZ09e1bffvutZsyYoe7duyswMFB//OMfFR8fr/vvv1+SdPToUZlMJqWnp9tsZzKZtHHjRklXL0eZTCatXr1aoaGhcnFx0aJFi2QymXTgwAGbY77++utq2rSpzXZnz55VXl6eXF1dtXr1apv+ycnJcnd314ULFyRJx44d06BBg+Tl5SVvb2/169fP+nh16ept9nFxcfLy8lLdunX1/PPP606eOfnpp5+qVatWcnFxUaNGjfTaa6/ZtDdq1EjTpk3TsGHD5OHhoVGjRt10X+Hh4TKbzUpISCjxMbt166affvpJ48aNk8lk4q4rAKjmGNkpITc3N7m5uWnFihXq3LmzXFxcSrW/v/3tb3r11VfVpEkT1alTR++9956WLl2qadOmWfssXbpUjzzyyHXbenh46M9//rOSkpKsjz+/1r9///6qVauWLl++rMjISIWFhenbb7+Vk5OTXnrpJfXq1Uu7du2Ss7OzXnvtNS1ZskSLFi1Sy5Yt9dprryk5OVk9evS4ad1paWkaNGiQpkyZoocfflhbt27Vk08+qbp162r48OHWfq+++qomTZqkyZMn3/K/g6Ojo1555RU98sgjevrpp9WwYcPffczPPvtMbdu21ahRozRy5MhbHg9AxQod/769S6gU0mbd+I4wlA9GdkrIyclJS5YsUWJiory8vNSlSxf9/e9/165du0q0v6lTp+q+++5T06ZN5e3trejoaH344YfW9h9//FFpaWmKjo6+4fbR0dFasWKFdRQnLy9PX375pbX/Rx99pOLiYv3v//6vQkJC1LJlSy1evFiZmZnWUaY5c+YoPj5eAwYMUMuWLbVgwYLbzgmaPXu2evbsqYkTJ6p58+YaPny4xowZo1mzZtn069Gjh5599lk1bdrUOjp1Mw888IDatWt302B0u2N6e3vL0dFR7u7uMpvNVfZyHwCgbBB2SmHgwIE6fvy4vvjiC/Xq1UsbN25Uhw4dtGTJkt+9r7vvvtvm8+DBg3X06FF99913kq6O0nTo0EFBQUE33L53796qUaOGvvjiC0lXL/N4eHgoPDxckrRz504dPnxY7u7u1lEpb29vXbp0SUeOHFFubq6ysrLUqVMn6z6dnJyuq+u/7d+/X126dLFZ16VLFx06dMj69Okbnd/tzJgxQ4mJidq/f3+JjwkAgETYKbWaNWvqvvvu08SJE7V161YNHz7cOiJx7aWhv533cvny5Rvup3bt2jafzWazevTooaSkJElSUlLSTUd1pKsTlh988EGb/g8//LB1ovP58+cVGhqq9PR0m+XHH3+84aWxsvbf53c7Xbt2VWRkpOLj48upIgBAdUHYKWPBwcHKz8+XJOvzGbKysqztv52sfDvR0dH66KOPlJqaqv/85z8aPHjwbfuvWbNGe/fu1YYNG2zCUYcOHXTo0CH5+PioWbNmNounp6c8PT3l6+urbdu2Wbe5cuWK0tLSbnnMli1bXner/ZYtW9S8efNSv29q+vTpWrlypVJTU3/3MZ2dnRnlAQBIIuyU2OnTp9WjRw998MEH2rVrlzIyMrR8+XLNnDlT/fr1k3T1zdqdO3fW9OnTtX//fqWkpPyuR5APGDBA586d0+jRo9W9e3f5+fndsn/Xrl1lNpsVHR2txo0b21ySio6OVr169dSvXz99++23ysjI0MaNG/X000/r559/liQ988wzmj59ulasWKEDBw7oySef1NmzZ295zGeffVbr16/XtGnT9OOPPyoxMVFvvfWWnnvuuTs+z5sJCQlRdHS03nzzzd99zEaNGmnTpk365ZdfdOrUqVLXAgCougg7JeTm5qZOnTrp9ddfV9euXdW6dWtNnDhRI0eO1FtvvWXtt2jRIl25ckWhoaEaO3asXnrppTs+hru7u/r27audO3fe8hLWNSaTSUOGDLlh/1q1amnTpk0KCAiwTkAeMWKELl26JA8PD0lXQ8TQoUMVExOjsLAwubu764EHHrjlMTt06KCPP/5Yy5YtU+vWrTVp0iRNnTrV5k6s0pg6daqKi4t/9zGnTp2qo0ePqmnTpjwBFQCqOZPlTh6kYnB5eXny9PRUbm6u9Q//NZcuXVJGRoYaN26smjVr2qlClAd+t0DF49bzq7j1vGzc6u/3bzGyAwAADI2wAwAADI2wAwAADI2wAwAADI2wAwAADI2wAwAADI2wAwAADI2wAwAADI2wAwAADM3JngefP3++5s+fr6NHj0qSWrVqpUmTJikqKkqS1K1bN6WkpNhs8/jjj2vBggXWz5mZmRo9erS++eYbubm5KSYmRgkJCda3fVdVFf2U0d/7NM/hw4crMTFRCQkJ+tvf/mZdv2LFCj3wwAPiwdwAgMrCriM7DRs21PTp05WWlqYdO3aoR48e6tevn/bu3WvtM3LkSGVlZVmXmTNnWtuKiorUp08fFRYWauvWrUpMTNSSJUs0adIke5xOtVOzZk3NmDFDv/76q71LAQDgpuwadvr27avevXvrrrvuUvPmzfXyyy/Lzc1N3333nbVPrVq1ZDabrctv333x9ddfa9++ffrggw/Url07RUVFadq0aZo3b54KCwvtcUrVSnh4uMxmsxISEm7a59NPP1WrVq3k4uKiRo0a6bXXXqvACgEAqERzdoqKirRs2TLl5+crLCzMun7p0qWqV6+eWrdurfj4eF24cMHalpqaqpCQEDVo0MC6LjIyUnl5eTajQ/+toKBAeXl5Ngt+P0dHR73yyiuaO3eufv755+va09LSNGjQIA0ePFi7d+/WlClTNHHiRC1ZsqTiiwUAVFt2n9iye/duhYWF6dKlS3Jzc1NycrKCg4MlSY888ogCAwPl5+enXbt2acKECTp48KA+++wzSVJ2drZN0JFk/ZydnX3TYyYkJOjFF18spzOqXh544AG1a9dOkydP1sKFC23aZs+erZ49e2rixImSpObNm2vfvn2aNWuWhg8fbodqAQDVkd1Hdlq0aKH09HRt27ZNo0ePVkxMjPbt2ydJGjVqlCIjIxUSEqLo6Gi9//77Sk5O1pEjR0p1zPj4eOXm5lqXY8eOlcWpVFszZsxQYmKi9u/fb7N+//796tKli826Ll266NChQyoqKqrIEgEA1Zjdw46zs7OaNWum0NBQJSQkqG3btnrjjTdu2LdTp06SpMOHD0uSzGazTpw4YdPn2mez2XzTY7q4uMjDw8NmQcl17dpVkZGRio+Pt3cpAABcx+5h578VFxeroKDghm3p6emSJF9fX0lSWFiYdu/erZycHGufdevWycPDw3opDBVj+vTpWrlypVJTU63rWrZsqS1bttj027Jli5o3by5HR8eKLhEAUE3Zdc5OfHy8oqKiFBAQoHPnzikpKUkbN27U2rVrdeTIESUlJal3796qW7eudu3apXHjxqlr165q06aNJCkiIkLBwcEaOnSoZs6cqezsbL3wwguKjY2Vi4uLPU+t2rl2qfHNN9+0rnv22WfVsWNHTZs2TQ8//LBSU1P11ltv6e2337ZjpQCA6sauIzs5OTkaNmyYWrRooZ49e2r79u1au3at7rvvPjk7O+tf//qXIiIiFBQUpGeffVYDBw7UypUrrds7Ojpq1apVcnR0VFhYmP7yl79o2LBhmjp1qh3PqvqaOnWqiouLrZ87dOigjz/+WMuWLVPr1q01adIkTZ06lcnJAIAKZbLwqFvl5eXJ09NTubm5183fuXTpkjIyMtS4cWPVrFnTThWiPPC7BSpeRT8dvrL6vU+tx43d6u/3b1W6OTsAAABlibADAAAMjbADAAAMjbADAAAMjbADAAAMjbADAAAMjbADAAAMjbADAAAMjbADAAAMjbADAAAMza4vAsXNZU4NqdDjBUzafcd9LRaL7rvvPjk6Omrt2rU2bW+//bb+/ve/a8+ePWrYsGFZlwkAwO/GyA5+N5PJpMWLF2vbtm165513rOszMjL0/PPPa+7cuQQdAEClQdhBifj7++uNN97Qc889p4yMDFksFo0YMUIRERFq3769oqKi5ObmpgYNGmjo0KE6deqUddtPPvlEISEhcnV1Vd26dRUeHq78/Hw7ng0AwMgIOyixmJgY9ezZU4899pje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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = sns.countplot(data=temp,x='Pclass',hue='Survived');\n",
    "ax.bar_label(ax.containers[0]);\n",
    "ax.bar_label(ax.containers[1]);\n",
    "plt.legend(title='Survived or Not', loc='upper left', labels=['No', 'Yes']);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "aa490727",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:02:57.064000Z",
     "start_time": "2022-04-27T07:02:57.050334Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['male', 'female'], dtype=object)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Sex\n",
    "# 查看Sex的值有哪些\n",
    "temp.Sex.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "b83a07ad",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:04:17.584207Z",
     "start_time": "2022-04-27T07:04:17.282648Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGyCAYAAAACgQXWAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAK+VJREFUeJzt3X1clHWi///3AIIozBAKM7Ii6WYqqZna6pSbpiaZx+2GY+WSUpluiHaUvIlOmjclZbtr6TEt83ZPHkt72DnpijekVgreUHZMW1dde0BHBsyCwTtAmd8ffZ3fTmoZAjN8ej0fj+vxaK7rc13zudqdeD2uuWbG4vF4PAIAADBUkL8nAAAAUJeIHQAAYDRiBwAAGI3YAQAARiN2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRQvw9gUBQXV2t48ePKzIyUhaLxd/TAQAAV8Hj8ai8vFxxcXEKCvqR6zceP/v66689KSkpnujoaE/jxo09HTt29OzZs8e7vbq62jNlyhSPw+HwNG7c2NOvXz/P3//+d59jnDx50vP73//eExkZ6bHZbJ7HH3/cU15eftVzKCws9EhiYWFhYWFhaYBLYWHhj/6d9+uVne+++06333677rzzTm3YsEExMTE6fPiwrrvuOu+Y2bNna+7cuVq+fLlat26tKVOmKCkpSQcPHlTjxo0lSSkpKSoqKtLmzZtVVVWlxx57TKNGjdLKlSuvah6RkZGSpMLCQlmt1to/UQAAUOvcbrfi4+O9f8evxOLx+O+HQJ955hnt2LFDH3/88WW3ezwexcXF6emnn9aECRMkSWVlZbLb7Vq2bJkefvhhffnll0pMTNSePXvUvXt3SVJ2drbuueceff3114qLi/vJebjdbtlsNpWVlRE7AAA0EFf799uvNyj/z//8j7p3764hQ4YoNjZWt9xyixYtWuTdfuzYMblcLvXv39+7zmazqUePHsrNzZUk5ebmKioqyhs6ktS/f38FBQVp165dl33eiooKud1unwUAAJjJr7Hzj3/8QwsWLFDbtm21ceNGpaWl6amnntLy5cslSS6XS5Jkt9t99rPb7d5tLpdLsbGxPttDQkIUHR3tHfNDWVlZstls3iU+Pr62Tw0AAAQIv8ZOdXW1unbtqlmzZumWW27RqFGjNHLkSC1cuLBOnzczM1NlZWXepbCwsE6fDwAA+I9fY6dFixZKTEz0WdehQwcVFBRIkhwOhySpuLjYZ0xxcbF3m8PhUElJic/28+fP69tvv/WO+aGwsDBZrVafBQ3btGnTZLFYfJb27dtLkr766qtLtl1cVq9eLUlatmzZFcf88P9fAICGxa+xc/vtt+vQoUM+6/7+978rISFBktS6dWs5HA7l5OR4t7vdbu3atUtOp1OS5HQ6VVpaqvz8fO+YDz/8UNXV1erRo0c9nAUCxU033aSioiLv8sknn0iS4uPjfdYXFRVp+vTpioiI0MCBAyVJDz300CVjkpKS1Lt370veJgUANCx+/ej5+PHjddttt2nWrFl68MEHtXv3br355pt68803JUkWi0Xjxo3TCy+8oLZt23o/eh4XF6f77rtP0vdXgu6++27v219VVVUaM2aMHn744av6JBbMERISctmrecHBwZesX7t2rR588EFFRERIksLDwxUeHu7dfuLECX344YdavHhx3U4aAFDn/Hpl59Zbb9XatWv1X//1X+rYsaNmzpypV199VSkpKd4xkyZN0tixYzVq1CjdeuutOnXqlLKzs73fsSNJb7/9ttq3b69+/frpnnvuUa9evbzBhF+Ow4cPKy4uTm3atFFKSor37dAfys/P1759+zRixIgrHmvFihVq0qSJ/vVf/7WupgsAqCd+/Z6dQMH37DR8GzZs0KlTp9SuXTvv21T/93//py+++OKSL5saPXq0tm3bpoMHD17xeImJierTp49ef/31up46AKCGrvbvN7+NBSNcvPdGkjp37qwePXooISFB7777rs8VnLNnz2rlypWaMmXKFY+Vm5urL7/8Un/5y1/qdM4AgPrBr57DSFFRUbrxxht15MgRn/Vr1qzRmTNnNHz48Cvu+9Zbb6lLly7q1q1bXU8TAFAPiB0Y6dSpUzp69KhatGjhs37x4sX63e9+p5iYmCvu98OrQQCAho3YgREmTJig7du366uvvtLOnTt1//33Kzg4WEOHDvWOOXLkiD766CM98cQTVzzOO++8o/Pnz+uRRx6pj2kDAOoB9+zACF9//bWGDh2qkydPKiYmRr169VJeXp7PFZwlS5aoZcuWGjBgwBWPs3jxYj3wwAOKioqqh1kDAOoDn8YSn8YCAKAhahC/eg4AAFDXeBurnnSbuMLfUwACUv4rV/5kHADUBq7sAAAAoxE7AADAaMQOAAAw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d93FnwspKSmRJM2fP19LlixRQUGBzp49q8rKSnXp0uWyxz5y5IjOnDmju+66y2d9ZWWlbrnlllo+E+CX7ee83v75dW+329WkSRO1adPGZ93u3bu9jw8fPqypU6dq165d+uabb7xXdAoKCtSxY8dL5vL5559r69atioiIuGTb0aNHdeONN9bsJOFXxA4arEaNGvk8tlgsPussFouk7++9WbVqlSZMmKA//elPcjqdioyM1CuvvKJdu3Zd9tinTp2SJK1fv16/+tWvfLbxmztA7fo5r7cfvsYv99+Bf36LavDgwUpISNCiRYsUFxen6upqdezYUZWVlVecy+DBg/Xyyy9fsq1FixY/78QQMIgd/CLs2LFDt912m0aPHu1d92M3KSYmJiosLEwFBQXq3bt3fUwR+MWqq9fbyZMndejQIS1atEi//e1vJUmffPLJj+7TtWtXvffee7r++usVEsKfSFPwvyR+Edq2basVK1Zo48aNat26tf7yl79oz549at269WXHR0ZGasKECRo/fryqq6vVq1cvlZWVaceOHbJarUpNTa3nMwDMVVevt+uuu07NmjXTm2++qRYtWqigoEDPPPPMj+6Tnp6uRYsWaejQoZo0aZKio6N15MgRrVq1Sm+99ZaCg4NrNBf4F7GDX4Q//OEP+uyzz/TQQw/JYrFo6NChGj16tPej6Zczc+ZMxcTEKCsrS//4xz8UFRWlrl276tlnn63HmQO/DHXxegsKCtKqVav01FNPqWPHjmrXrp3mzp2rPn36XHGfuLg47dixQ5MnT9aAAQNUUVGhhIQE3X333QoK4gPMDZXF4/F4/D0JAACAukKmAgAAoxE7AADAaMQOAAAwGrEDAACMRuwAAACjETsAAMBoxA4AADAasQMAAIxG7AAAAKMROwAapBMnTigtLU2tWrVSWFiYHA6HkpKStGPHDn9PDUCA4bexADRIycnJqqys1PLly9WmTRsVFxcrJydHJ0+e9PfUAAQYruwAaHBKS0v18ccf6+WXX9add96phIQE/eY3v1FmZqZ+97vfecc88cQTiomJkdVqVd++ffX5559L+v6qkMPh0KxZs7zH3Llzp0JDQ5WTk+OXcwJQd4gdAA1ORESEIiIi9P7776uiouKyY4YMGaKSkhJt2LBB+fn56tq1q/r166dvv/1WMTExWrJkiaZNm6a9e/eqvLxcw4YN05gxY9SvX796PhsAdY1fPQfQIL333nsaOXKkzp49q65du6p37956+OGH1blzZ33yyScaNGiQSkpKFBYW5t3nhhtu0KRJkzRq1ChJUnp6urZs2aLu3btr//792rNnj894AGYgdgA0WOfOndPHH3+svLw8bdiwQbt379Zbb72l06dP66mnnlJ4eLjP+LNnz2rChAl6+eWXvY87duyowsJC5efnq1OnTv44DQB1jNgBYIwnnnhCmzdv1ujRozVv3jxt27btkjFRUVFq3ry5JOmLL77QrbfeqqqqKq1du1aDBw+u5xkDqA98GguAMRITE/X++++ra9eucrlcCgkJ0fXXX3/ZsZWVlXrkkUf00EMPqV27dnriiSe0f/9+xcbG1u+kAdQ5ruwAaHBOnjypIUOG6PHHH1fnzp0VGRmpvXv3auzYsRo0aJDeeust3XHHHSovL9fs2bN144036vjx41q/fr3uv/9+de/eXRMnTtSaNWv0+eefKyIiQr1795bNZtO6dev8fXoAahmxA6DBqaio0LRp07Rp0yYdPXpUVVVVio+P15AhQ/Tss88qPDxc5eXl+vd//3e999573o+a33HHHcrKytLRo0d11113aevWrerVq5ck6auvvtLNN9+sl156SWlpaX4+QwC1idgBAABG43t2AACA0YgdAABgNGIHAAAYjdgBAABGI3YAAIDRiB0AAGA0YgcAABiN2AEAAEYjdgAAgNGIHQAAYDRiBwAAGO3/A9FKygNtl1khAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 查看性别的分布情况\n",
    "ax = sns.countplot(data=temp,x='Sex');\n",
    "ax.bar_label(ax.containers[0]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "5e34e764",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:04:41.775519Z",
     "start_time": "2022-04-27T07:04:41.392489Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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Ly8FBwfr5ZdfLsbKgbKhKD5vDg4O2rBhg55//nk1adJE9evX16JFi9SxY8f7bhMQEKA9e/Zo8uTJ6tq1q3JyclS9enV169ZNDg7cwFxamSwWi8XeRQAAABQVYioAADA0wg4AADA0wg4AADA0wg4AADA0wg4AADA0wg4AADA0wg4AADA0wg4AADA0wg4AADA0wg6AUunSpUsaNWqUqlWrJhcXF/n7+ys8PFx79uyxd2kAShi+GwtAqdSvXz/l5uZqzZo1qlWrltLT05WQkKDLly/buzQAJQwrOwBKnczMTO3evVtz5sxRp06dVL16df3+979XdHS0/vjHP1rH/PnPf1blypVlNpsVGhqqw4cPS/ppVcjf31+vvfaadZ979+6Vs7OzEhIS7DInAEWHsAOg1HF3d5e7u7s2b96snJyce47p37+/MjIytHXrViUnJys4OFidO3fWlStXVLlyZa1atUozZszQwYMHdfXqVQ0ZMkRjxoxR586di3k2AIoa33oOoFTauHGjhg8frh9//FHBwcF6/PHHNWjQIDVt2lRffPGFevTooYyMDLm4uFi3qVOnjiZNmqQRI0ZIkqKiovTPf/5TrVq10pEjR3TgwAGb8QCMgbADoNS6efOmdu/erS+//FJbt27V/v379c477+j69et6/vnn5erqajP+xx9/1EsvvaQ5c+ZY3zdp0kTnz59XcnKygoKC7DENAEWMsAPAMP785z9r+/btGj16tBYvXqydO3feNcbLy0uVKlWSJB09elStW7fWrVu3tGnTJvXs2bOYKwZQHLgbC4BhNGrUSJs3b1ZwcLDS0tLk5OSkGjVq3HNsbm6u/vSnP2ngwIGqX7++/vznP+vIkSPy9fUt3qIBFDlWdgCUOpcvX1b//v313HPPqWnTpvLw8NDBgwc1duxY9ejRQ++88446dOigq1evau7cuapXr54uXLigTz/9VH369FGrVq00ceJEffjhhzp8+LDc3d31+OOPy9PTU1u2bLH39AAUMsIOgFInJydHM2bM0GeffaazZ8/q1q1bCgwMVP/+/fXyyy/L1dVVV69e1V/+8hdt3LjReqt5hw4dFBcXp7Nnz6pLly7asWOH2rdvL0k6d+6cmjVrptmzZ2vUqFF2niGAwkTYAQAAhsZzdgAAgKERdgAAgKERdgAAgKERdgAAgKERdgAAgKERdgAAgKERdgAAgKERdgAAgKERdgAAgKERdgAAgKERdgAAgKH9P7rr94REH8eNAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 性别与存货的关系\n",
    "# Sex vs Survived\n",
    "ax = sns.countplot(data=temp,x='Sex',hue='Survived');\n",
    "ax.bar_label(ax.containers[0]);\n",
    "ax.bar_label(ax.containers[1]);\n",
    "plt.legend(title='Survived or Not', loc='upper right', labels=['No', 'Yes']);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "c06de49d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:06:23.799820Z",
     "start_time": "2022-04-27T07:06:23.790261Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 0, 3, 4, 2, 5, 8])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# SibSp : 泰坦尼克号上的兄弟姐妹/配偶的数量\n",
    "temp.SibSp.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "fe8904b5",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:06:57.624073Z",
     "start_time": "2022-04-27T07:06:57.131883Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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qn/9619KS0urF2GHa3bchLe3t3r27Kn169c726qqqrR+/XquM8BlGYahiRMnasWKFdqwYYPatm1rdkluraqqSmVlZWaXYbo77rhD+/btU25urnPp1auX4uLilJubS9D5iZKSEh07dkwtWrQwuxTT/fjjj/LwcI0Mnp6eqqqqMqmiq8ORHTeSmJio+Ph49erVS3369NG8efNUWlqqhx9+2OzSTFVSUuLyf1bHjx9Xbm6ugoOD1bp1axMrM1dCQoKWLVumTz75RP7+/nI4HJKkwMBA+fn5mVyduZKTkzV06FC1bt1a586d07Jly7Rp0yZ9/vnnZpdmOn9//0uu62rUqJGaNm163V/v9fTTT2v48OGKiIjQyZMnlZKSIk9PT40ZM8bs0kw3fPhwzZgxQ61bt1aXLl20Z88evfLKKxo3bpzZpVWPAbcyf/58o3Xr1oa3t7fRp08fY/v27WaXZLqNGzcaki5Z4uPjzS7NVJfbJ5KMxYsXm12a6caNG2dEREQY3t7eRvPmzY077rjDWLt2rdllua3bbrvNePLJJ80uw3SjR482WrRoYXh7exu/+c1vjNGjRxtHjx41uyy3UFxcbDz55JNG69atDV9fX6Ndu3bGn/70J6OsrMzs0qqF5+wAAABL45odAABgaYQdAABgaYQdAABgaYQdAABgaYQdAABgaYQdAABgaYQdAABgaYQdAABgaYQdANfUN998I5vNptzcXLNLcTp06JD69u0rX19fde/evcbbsdlsWrlypaTqzXPTpk2y2WwqLCyUJC1ZskRBQUE1/n4A1UPYASzuoYceks1m08yZM13aV65cKZvNZlJV5kpJSVGjRo2Ul5fn8vLdnzpz5owmTJig1q1by8fHR2FhYYqNjdXWrVudY06dOqWhQ4fWuI7Ro0fr8OHDNf48gOrhRaDAdcDX11ezZs3S73//ezVp0sTscmpFeXm5vL29a/TZY8eOadiwYYqIiLjimFGjRqm8vFxLly5Vu3btVFBQoPXr1+v77793jgkLC6vR91/k5+d33b+0FagLHNkBrgMxMTEKCwtTWlraFcdMnz79klM68+bNU5s2bZzrDz30kEaOHKkXX3xRoaGhCgoKUmpqqi5cuKCkpCQFBwerZcuWWrx48SXbP3TokPr16ydfX1/ddNNNysrKcunfv3+/hg4dqsaNGys0NFRjx47Vd9995+wfOHCgJk6cqEmTJqlZs2aKjY297DyqqqqUmpqqli1bysfHR927d1dGRoaz32azKScnR6mpqbLZbJo+ffol2ygsLNSWLVs0a9Ys3X777YqIiFCfPn2UnJys3/3udy7bungaq7rz/Kn/exrr4j+D//mf/1GbNm0UGBioBx54QOfOnXOOOXfunOLi4tSoUSO1aNFCc+fO1cCBAzVp0iTnmIULF6pDhw7y9fVVaGio7r333ivWAFwPCDvAdcDT01Mvvvii5s+fr2+//fZXbWvDhg06efKkNm/erFdeeUUpKSm666671KRJE+3YsUOPPfaYfv/731/yPUlJSXrqqae0Z88e2e12DR8+3HmUpLCwUIMGDdLNN9+s3bt3KyMjQwUFBbr//vtdtrF06VJ5e3tr69atSk9Pv2x9f/nLX/Tyyy/rpZde0ldffaXY2Fj97ne/05EjRyT999RTly5d9NRTT+nUqVN6+umnL9lG48aN1bhxY61cuVJlZWVXtX9+bp7VcezYMa1cuVJr1qzRmjVrlJWV5XIKMjExUVu3btWqVauUmZmpLVu26Msvv3T27969W0888YRSU1OVl5enjIwMDRgw4KrmAFiO2a9dB3BtxcfHGyNGjDAMwzD69u1rjBs3zjAMw1ixYoXx078CUlJSjKioKJfPzp0714iIiHDZVkREhFFZWels69ixo3Hrrbc61y9cuGA0atTIeP/99w3DMIzjx48bkoyZM2c6x1RUVBgtW7Y0Zs2aZRiGYTz//PPG4MGDXb77xIkThiQjLy/PMAzDuO2224ybb775F+cbHh5uzJgxw6Wtd+/exh/+8AfnelRUlJGSkvKz2/n444+NJk2aGL6+vka/fv2M5ORkY+/evS5jJBkrVqyo9jw3btxoSDJ++OEHwzAMY/HixUZgYKBzfEpKitGwYUOjuLjY2ZaUlGRER0cbhmEYxcXFRoMGDYyPPvrI2V9YWGg0bNjQePLJJw3DMIy//e1vRkBAgMs2gOsdR3aA68isWbO0dOlSHTx4sMbb6NKlizw8/vevjtDQUHXt2tW57unpqaZNm+r06dMun7Pb7c4/e3l5qVevXs469u7dq40bNzqPqDRu3FidOnWS9N8jHRf17NnzZ2srLi7WyZMn1b9/f5f2/v37X/WcR40apZMnT2rVqlUaMmSINm3apB49emjJkiU/+7mfm2d1tGnTRv7+/s71Fi1aOPflP//5T1VUVKhPnz7O/sDAQHXs2NG5/tvf/lYRERFq166dxo4dq/fee08//vhjtb8fsCLCDnAdGTBggGJjY5WcnHxJn4eHhwzDcGmrqKi4ZFyDBg1c1m0222Xbqqqqql1XSUmJhg8frtzcXJflyJEjLqdgGjVqVO1t1gZfX1/99re/1dSpU7Vt2zY99NBDSklJuabf+Wv3pb+/v7788ku9//77atGihaZNm6aoqCjn7e7A9YiwA1xnZs6cqdWrVys7O9ulvXnz5nI4HC6BpzafjbN9+3bnny9cuKCcnBx17txZktSjRw8dOHBAbdq0Ufv27V2Wqwk4AQEBCg8Pd7k9XJK2bt2qyMjIXz2HyMhIlZaW/uyYn5vnr9WuXTs1aNBAu3btcrYVFRVdcvu6l5eXYmJiNHv2bH311Vf65ptvtGHDhlqpAaiPuPUcuM507dpVcXFxevXVV13aBw4cqDNnzmj27Nm69957lZGRoc8++0wBAQG18r0LFixQhw4d1LlzZ82dO1c//PCDxo0bJ0lKSEjQm2++qTFjxuiZZ55RcHCwjh49quXLl+uvf/2rPD09q/09SUlJSklJ0Q033KDu3btr8eLFys3N1XvvvVftbXz//fe67777NG7cOHXr1k3+/v7avXu3Zs+erREjRtR4nr+Wv7+/4uPjnXe+hYSEKCUlRR4eHs5nJq1Zs0b//Oc/NWDAADVp0kSffvqpqqqqXE51AdcbjuwA16HU1NRLTo107txZCxcu1IIFCxQVFaWdO3de9k6lmpo5c6ZmzpypqKgoffHFF1q1apWaNWsmSc6jMZWVlRo8eLC6du2qSZMmKSgoyOX6oOp44oknlJiYqKeeekpdu3ZVRkaGVq1apQ4dOlR7G40bN1Z0dLTmzp2rAQMG6KabbtLUqVP1yCOP6LXXXqvxPGvDK6+8IrvdrrvuuksxMTHq37+/OnfuLF9fX0lSUFCQ/v73v2vQoEHq3Lmz0tPT9f7776tLly61VgNQ39iM/3uSHgBQb5SWluo3v/mNXn75ZY0fP97scgC3xGksAKhH9uzZo0OHDqlPnz4qKipSamqqJP3i6TXgekbYAYB65qWXXlJeXp68vb3Vs2dPbdmypVZPlQFWw2ksAABgaVygDAAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALO3/A0OeGiBqOnGHAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#  泰坦尼克号上的兄弟姐妹/配偶的数量 分布\n",
    "ax = sns.countplot(data=temp,x='SibSp');\n",
    "ax.bar_label(ax.containers[0]);\n",
    "ax.set_xlabel('Number of Siblings');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "84614c65",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:08:12.349022Z",
     "start_time": "2022-04-27T07:08:11.664274Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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9OgBAPDy8oKrqyvGjh2LxYsXIyMjAzNmzEBISAh7b4iIiKh2Ycfd3R3Xr1/H9u3bcfXqVQDAmDFjEBAQAENDwxpvZ+3atQCAPn36qMzftGkTgoKCAADLli2DlpYW/Pz8UFRUBG9vb6xZs0Zsq62tjf379yM4OBhKpRJGRkYIDAzEvHnzanNoREREJDG1CjsRERGwsbHBxIkTVeZv3LgRd+7cwfTp02u0nZrc4sfAwACRkZGIjIysto2joyN+/vnnGu2TiIiIXiy1GrOzfv16uLi4VJrv5uaGdevWPXdRRERERHWlVmEnIyMDtra2leZbWVkhPT39uYsiIiIiqiu1Cjv29vbis6ked+LECdjZ2T13UURERER1pVZjdiZOnIjJkyejpKQE/fr1AwAcOnQIH374Ya3voExERERUH2oVdqZNm4Z79+7hnXfeQXFxMYC/BxJPnz4d4eHhdVogERER0fOoVdiRyWRYtGgRZs6ciStXrsDQ0BCtWrXifW2IiIhI49Qq7FQwNjZG165d66oWIiIiojpXqwHKRERERI0Fww4RERFJGsMOERERSRrDDhEREUkaww4RERFJGsMOERERSRrDDhEREUkaww4RERFJGsMOERERSRrDDhEREUkaww4RERFJGsMOERERSRrDDhEREUkaww4RERFJGsMOERERSRrDDhEREUkaww4RERFJGsMOERERSRrDDhEREUkaww4RERFJGsMOERERSRrDDhEREUkaww4RERFJGsMOERERSRrDDhEREUkaww4RERFJmlrDTlxcHIYMGQI7OzvIZDJERUWpLA8KCoJMJlOZfHx8VNrcv38fAQEBkMvlMDMzw4QJE5CXl9eAR0FERESaTK1hJz8/Hx06dEBkZGS1bXx8fJCeni5O33zzjcrygIAAXLp0CTExMdi/fz/i4uIwadKk+i6diIiIGgkdde7c19cXvr6+T2yjr68PhUJR5bIrV67gwIEDOH36NLp06QIAWLVqFQYOHIjPP/8cdnZ2dV4zERERNS4aP2YnNjYW1tbWaNOmDYKDg3Hv3j1xWXx8PMzMzMSgAwCenp7Q0tLCb7/9Vu02i4qKkJubqzIRERGRNGl02PHx8cHXX3+NQ4cOYdGiRTh69Ch8fX1RVlYGAMjIyIC1tbXKOjo6OrCwsEBGRka1242IiICpqak42dvb1+txEBERkfqo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3b59W90lERERUT3R2LCjUCgA/H2zucdlZmaKyxQKBbKyslSWl5aW4v79+2Kbqujr60Mul6tMREREJE0aewflFi1aQKFQ4NChQ+jYsSOAvwez/vbbbwgODgYAKJVKZGdnIyEhAR4eHgCAw4cPo7y8HN27d1dX6S8Uj2lfN+j+9po06O6IiEgC1Bp28vLycOPGDfF1SkoKEhMTYWFhAQcHB0yePBkLFixAq1at0KJFC8ycORN2dnYYPnw4AKBt27bw8fHBxIkTsW7dOpSUlCA0NBT+/v68EouIiIgAqDnsnDlzBn379hVfh4WFAQACAwOxefNmfPjhh8jPz8ekSZOQnZ2NV155BQcOHFC5y+727dsRGhqK/v37Q0tLC35+fli5cmWDHwsRERFpJrWGnT59+kAQhGqXy2QyzJs3D/Pmzau2jYWFBXbs2FEf5REREZEEaOwAZSIiIqK6wLBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJLGsENERESSxrBDREREksawQ0RERJKm0WFnzpw5kMlkKpOLi4u4vLCwECEhIbC0tISxsTH8/PyQmZmpxoqJiIhI02h02AEANzc3pKeni9Px48fFZVOmTMG+ffuwZ88eHD16FGlpaRgxYoQaqyUiIiJNo6PuAp5GR0cHCoWi0vycnBxs2LABO3bsQL9+/QAAmzZtQtu2bXHq1Cn06NGjoUslIiIiDaTxPTvXr1+HnZ0dWrZsiYCAAKSmpgIAEhISUFJSAk9PT7Gti4sLHBwcEB8fr65yiYiISMNodM9O9+7dsXnzZrRp0wbp6emYO3cuXn31VVy8eBEZGRnQ09ODmZmZyjo2NjbIyMh44naLiopQVFQkvs7Nza2P8omIiEgDaHTY8fX1Ff9u3749unfvDkdHR+zevRuGhoa13m5ERATmzp1bFyUSERGRhtP401iPMzMzQ+vWrXHjxg0oFAoUFxcj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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Number of Siblings vs Survived\n",
    "# 兄弟姐妹、配偶数量与是否存货的关系\n",
    "ax = sns.countplot(data=temp,x='SibSp',hue='Survived');\n",
    "ax.bar_label(ax.containers[0]);\n",
    "ax.bar_label(ax.containers[1]);\n",
    "plt.legend(title='Survived or Not', loc='upper right', labels=['No', 'Yes']);\n",
    "plt.title('Effect of Number of Siblings On Survival')\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "efc3835d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:15:06.142386Z",
     "start_time": "2022-04-27T07:15:06.131818Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1, 2, 5, 3, 4, 6])"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Parch: 泰坦尼克号上的父母/孩子人数\n",
    "\n",
    "temp.Parch.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "2160297c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:15:13.966876Z",
     "start_time": "2022-04-27T07:15:13.493318Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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1Kkju92uzZs3O9pzcnK0a9cuRUdHS5Kio6N17tw5JSUlOfps2bJFhYWFat269Q0YBQAAcGWm3sZ65pln1LZtW02ePFl9+vTR7t27NX/+fM2fP1+SZLPZNGLECL388suqV6+e6tSpo/HjxyssLEw9e/aU9NtM0H333afHH39cc+fO1cWLFzVs2DA99NBDxb4TCwAA3FpMDTstW7bUihUrNHbsWE2aNEl16tTRjBkz1L9/f0ef5557Tnl5eRoyZIjOnTun9u3ba926dapcubKjz/vvv69hw4apU6dOcnNzU69evTRz5kwzhgQAAFyMqZ+z4yqu9j59PmcHAADXc1N8zg4AAEBFI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLMzXsvPDCC7LZbE5LRESEo/38+fOKj49XUFCQfH191atXL2VmZjrtIy0tTXFxcapSpYqCg4M1evRoXbp06UYPBQAAuCgPswto2LChNm3a5Hjt4fF/JT3zzDP67LPP9PHHH8vf31/Dhg3TAw88oO3bt0uSCgoKFBcXJ7vdrh07dig9PV0DBw5UpUqVNHny5Bs+FgAA4HpMDzseHh6y2+1F1mdnZ2vBggVaunSpOnbsKElatGiRGjRooJ07d6pNmzbasGGDDh06pE2bNikkJER33XWXXnrpJY0ZM0YvvPCCPD09iz1mfn6+8vPzHa9zcnIqZnAAAMB0pj+zc/ToUYWFhen2229X//79lZaWJklKSkrSxYsXFRMT4+gbERGhWrVqKTExUZKUmJioxo0bKyQkxNEnNjZWOTk5OnjwYInHnDJlivz9/R1LzZo1K2h0AADAbKaGndatW2vx4sVat26d5syZo9TUVN1999365ZdflJGRIU9PTwUEBDhtExISooyMDElSRkaGU9C53H65rSRj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AADA0gg7AADA0gg7AADA0gg7AADA0gg7AK7Z4sWLFRAQcMU+jzzyiHr27Ol43aFDB40YMeKK29SuXVszZsy47voqSmnGfaNd7zn7/vvvZbPZlJycXG41lcaNPJd/vBZx6yHswLLi4uIc39syZMgQTZo06Yr9L/+nf3kJCgpS586d9c0339yIcktVW3n8Qvrf//4nHx+fK36T8xdffKGuXbsqKChIVapUUWRkpJ599ln99NNPpT7OW2+9pcWLF193vTfaBx98IHd3d8XHx5tdynWrXbu20zX9x+WRRx6pkON26NDhisft0KGD+vbtqyNHjji2eeGFF3TXXXdVSD0367WI8kPYgSUZhqGdO3eqXbt2kqRt27Y5fr6aTZs2KT09XevXr1dubq66dOmic+fOlamOCxculGm7irRx40aFh4erbt26xbbPmzdPMTExstvt+uSTT3To0CHNnTtX2dnZevPNN0t9HH9//3L/y/3ixYvlur/iLFiwQM8995w++OADnT9/vsKPVxoFBQUqLCy85u327Nmj9PR0paen65NPPpEkpaSkONa99dZb5V2qJGn58uWOY+zevVvS//27Sk9P1/Lly+Xt7a3g4OAKOf4fVcS1iJsLYQeWlJKSIsMwFBkZqZ9//lnHjh1T69atS7VtUFCQ7Ha7WrRooTfeeEOZmZnatWuXjh8/rh49eigkJES+vr5q2bKlNm3a5LRt7dq19dJLL2ngwIHy8/PTkCFDJElfffWV7r77bnl7e6tmzZoaPny48vLynLabPHmyHn30UVWtWlW1atVy+jbhOnXqSJKioqIcfxlL0pdffqlWrVrJx8dHAQEBateunX744Ycrjm/VqlX661//Wmzbjz/+qOHDh2v48OFauHChOnTooNq1a+uee+7Ru+++qwkTJjj1X79+vRo0aCBfX1/dd999Sk9Pd7Rd7dZBVlaWunfvLm9vb9WpU0fvv/9+kT42m01z5szRX//6V/n4+OiVV15xjKFZs2aqXLmybr/9dr344ou6dOmS03bvvvuu7r//flWpUkX16tXT6tWrr3heJCk1NVU7duzQ888/r/r162v58uXF9lu5cqXq1aunypUrKzY2VidOnHBqnzNnju644w55enrqzjvv1L///W+n9mnTpqlx48by8fFRzZo19eSTTyo3N9fRfvkWz+rVqxUZGSkvLy+lpaWV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iSee0IMPPqjk5GT985//VIcOHbRv3z4lJycXmSUoTs2aNXXHHXcU+Yt5+/bteuSRR3T//fercePGstvt+v7776+6v2bNmunQoUOqW7dukcXT07NUY7vcr6CgoEhbVFSUxo4dqx07dqhRo0ZaunRpsfs4evSofvjhB917770lHqd3797y9PTU1KlTi20v67vS/igiIkKXLl1SUlKSY11KSkqp9t+sWTOlpKQUez5LmrG6mtOnT2vVqlVatmyZ0y/0b775RmfPntWGDRscfS9duqS9e/cWqbtBgwaSpAYNGmj79u1O+9++fbsiIyMlSUlJSSosLNSbb76pNm3aqH79+jp58uRVa7yec3a9yuMavhpPT88i13dZz9WV1KtXT97e3tq8efN17Qc3Fw+zCwDKS2BgoAIDA3Xo0CH17dtXdevW1dGjR9W5c+cS32Z9LerVq6fly5ere/fustlsGj9+fKn+4h8zZozatGmjYcOG6bHHHpOPj48OHTqkjRs36l//+lepjh0cHCxvb2+tW7dONWrUUOXKlXXmzBnNnz9ff/3rXxUWFqaUlBQdPXpUAwcOLHYfq1atUkxMjKpUqVLicWrWrKnp06dr2LBhysnJ0cCBA1W7dm39+OOPeu+99+Tr63tNbz8vyZ133qn77rtPTzzxhObMmSMPDw+NGDGiVH91T5gwQd26dVOtWrXUu3dvubm5ad++fTpw4IBefvnlMtXz73//W0FBQerTp0+R2ZSuXbtqwYIFuu+++yT9Novw1FNPaebMmfLw8NCwYcPUpk0btWrVSpI0evRo9enTR1FRUYqJidGnn36q5cuXO965V7duXV28eFGzZs1S9+7dtX37ds2dO/eqNV7PObte5XENX03t2rWVmpqq5ORk1ahRQ1WrVi3zubqSypUra8yYMXruuefk6empdu3a6dSpUzp48KAGDx5cLmOB62FmB5Zy6dIlbd++Xffcc48kKSEhwfHz9Zo2bZqqVaumtm3bqnv37oqNjVWzZs2uul2TJk2UkJCgI0eO6O6771ZUVJQmTJigsLCwUh/bw8NDM2fO1Lx58xQWFqYePXqoSpUq+vbbb9WrVy/Vr19fQ4YMUXx8vJ544oli93Glt5z/3pNPPqkNGzbop59+0v3336+IiAg99thj8vPz06hRo0pd89UsWrRIYWFh+vOf/6wHHnhAQ4YMKdXnrsTGxmrNmjXasGGDWrZsqTZt2mj69OkKDw8vcy0LFy7U/fffX+xto169emn16tX6+eefJf32fMiYMWP0t7/9Te3atZOvr68+/PBDR/+ePXvqrbfe0htvvKGGDRtq3rx5WrRokePjApo2bapp06bptddeU6NGjfT+++9rypQppaqzrOfsepXHNXw1vXr10n333ae//OUvql69uj744IPrOldXMn78eD377LOaMGGCGjRooL59+5b6eTPcnGxGRdxkB+BSfv75Z4WGhurHH39USEiI2eUAwA3FzA5wCzhz5oymTZtG0AFwS2JmBwAAWBozOwAAwNIIOwAAwNIIOwAAwNIIOwAAwNIIOwAAwNIIOwAAwNIIOwAAwNIIOwAAwNIIOwAAwNL+P7htFmHr+jHJAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = sns.countplot(data=temp,x='Parch');\n",
    "ax.bar_label(ax.containers[0]);\n",
    "ax.set_xlabel(' # Parents / Children Aboard The Titanic');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "8a19da68",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:15:24.339568Z",
     "start_time": "2022-04-27T07:15:23.576825Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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V+u00LfKyfHIyvXr17Vq1Sp16NBB3bp1y/QYMGCArly5kumekTVr1ujPP/+0Pv/xxx+1e/du64xuJUuWVJ06dbRw4UKb43/w4EF9++23NjMu3ut7t0GDBvLx8dHs2bOVkpJibV+wYEG2fw/ktu7du+vPP//U3LlzMy27fv26dbbB3JYRTm8dd8ZZm3++zikpKZo5c2au7dvHx0fNmjXTvHnzbN73t+43K926dVO1atU0YcIE61dZZEhPT1f//v11+fLlXA0FW7ZsybKujEtvMy5L9fT0VIkSJaz36mbIyWvXtWtXOTg46IsvvtCKFSvUoUOHbH3HVKFChdStWzd9/fXXWrRokW7evJnpsr6sjvHu3bu1c+dO03UCZnBGCjBpw4YNmW5OlqTHH388R/ckDB06VGvXrlWHDh3Uu3dv1a9fX0lJSTpw4IBWrlypU6dOqUSJEmrZsqWef/55TZs2TcePH1fbtm2Vnp6u77//Xi1bttSAAQMkSfXr19d3332njz76SKVKlVK5cuUyfTdJhpdeeklz5sxR7969FR0drbJly2rlypXavn27pk6danqygn/au3evUlJS9Pjjj0uSduzYoVq1auXJl9926NBBixYtkpeXl6pVq6adO3fqu+++U/HixbO1vqenp2bNmqXnn39e9erVU8+ePeXj46PTp0/rm2++UZMmTfTJJ5+YqsnV1VXVqlXTsmXLVKlSJRUrVkw1atTQzZs31bp1a3Xv3l3VqlWTo6OjVq9erfPnz1un8s3KDz/8oMTExGwHqR49eujAgQN6//339dNPP6lXr14KDAzUpUuXtHHjRm3atElLliwxNabseuedd7Rx40Y1bdpUr776qjWcV69e/Y73mfzThAkTtGXLFjVq1EgvvviiqlWrpr/++kv79u3Td999p7/++uue61y7dq2uXLmip59+OsvljRs3lo+PjxYvXmzzwa1ChQp64okn1L9/fyUnJ2vq1KkqXry4zeW5kyZNUrt27RQUFKR+/fpZpz/38vKy+e6de33vFi5cWO+9955efvlltWrVSj169FBMTIzmz5+fJ/dIZcfzzz+v5cuX65VXXtGWLVvUpEkTpaWl6ejRo1q+fLkiIiJy9T7TDHXq1JGDg4MmTpyohIQEOTs7q1WrVnr88cdVtGhRhYWF6bXXXpPFYtGiRYty/VK9adOm6YknnlC9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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "### Parch vs Survived\n",
    "plt.figure(figsize=(10,6))\n",
    "ax = sns.countplot(data=temp,x='Parch',hue='Survived');\n",
    "ax.bar_label(ax.containers[0]);\n",
    "ax.bar_label(ax.containers[1]);\n",
    "plt.legend(title='Survived or Not', loc='upper right', labels=['No', 'Yes']);\n",
    "plt.title('Effect of # Parents / Children Aboard The Titanic On Survival')\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "45c2a400",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:15:39.886618Z",
     "start_time": "2022-04-27T07:15:39.877115Z"
    }
   },
   "outputs": [],
   "source": [
    "temp['Family Size'] = temp['SibSp']+temp['Parch'] + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "c346914e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:15:48.066108Z",
     "start_time": "2022-04-27T07:15:47.552194Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAPjtJREFUeJzt3XlcFWX///H3AQURBURZ5FZwKRdyyS1FrcxMIPTOfblNMb1bDE3lm3nb4la5VdpmoC1oGV/LSnNJEzW1FEsxS61IDcNSxBZAMRFhfn/cP8+3E5gKBwbG1/PxmMeDueaamc/ldt7OXDPHZhiGIQAAAItyMbsAAACAskTYAQAAlkbYAQAAlkbYAQAAlkbYAQAAlkbYAQAAlkbYAQAAlkbYAQAAlkbYAQAAlkbYAVAp2Ww2TZ8+3b6+ZMkS2Ww2HT16tFzrOHr0qGw2m5YsWVKu5wVw5Qg7AK7YxUBR3PKf//zH7PKcbs2aNbr11lvl7++v6tWrq1GjRho0aJA2bNhgdmkArkIVswsAUPnMnDlTDRs2dGhr0aJFudbwxx9/qEqVsvsn7Nlnn9WkSZN06623asqUKapevboOHz6sTZs2afny5YqIiJAkhYSE6I8//lDVqlXLrBYApUPYAXDVIiMj1b59e1NrqFatWpkd+8KFC3ryySd1xx13aOPGjUW2Z2Zm2n+22WxlWguA0uM2FgCn+fHHH/Xggw+qadOm8vDwUO3atTVw4MAi82gu3g777LPP9NBDD8nPz08+Pj66//77df78eWVlZWnEiBGqVauWatWqpUceeUSGYTgc469zdv4qOjpaderUUX5+fpFtPXv2VNOmTS+57y+//KKcnBx16dKl2O3+/v72n/86Z2fr1q2XvNXXoEEDh+OsX79eN998szw9PVWzZk1FRUXp4MGDl6wLQMlwZQfAVcvOztYvv/zi0FanTh3t3r1bO3fu1JAhQ1SvXj0dPXpUcXFx6tatm7755htVr17dYZ9x48YpMDBQM2bM0K5du7R48WL5+Pho586dCg4O1qxZs/TRRx/pmWeeUYsWLTRixIgrrnH48OF688039fHHH6tXr1729oyMDG3ZskXTpk275L7+/v7y8PDQmjVrNG7cOPn6+l7xeZs3b6633nrLoS0rK0uxsbEOIemtt95SdHS0wsPDNXfuXJ09e1ZxcXHq2rWrvvzyyyLBCEApGABwhRISEgxJxS6GYRhnz54tsk9ycrIhyXjzzTeLHCc8PNwoLCy0t4eFhRk2m8144IEH7G0XLlww6tWrZ9x6660Ox5VkTJs2rcgx09LSDMMwjIKCAqNevXrG4MGDHfabP3++YbPZjB9++OFvxzp16lRDkuHp6WlERkYaTz/9tJGSklKkX1pamiHJSEhIKPY4hYWFRq9evYwaNWoYBw8eNAzDME6fPm34+PgY9957r0PfjIwMw9vbu0g7gNLhNhaAq7Zw4UIlJSU5LJLk4eFh75Ofn69ff/1V1113nXx8fLR3794ixxk9erRsNpt9vWPHjjIMQ6NHj7a3ubq6qn379vrhhx+uqkYXFxcNGzZMq1ev1unTp+3tb7/9tjp37lxkgvVfzZgxQ4mJiWrTpo0+/vhjPfbYY2rXrp3atm2rb7/99orrePLJJ7V27VotWbJEoaGhkqSkpCRlZWVp6NCh+uWXX+yLq6urOnbsqE8++eSqxgrg73EbC8BVu+mmm4qdoPzHH39o9uzZSkhI0M8//+wwzyY7O7tI/+DgYId1b29vSVL9+vWLtP/+++9XXeeIESM0d+5crVy5UiNGjFBqaqpSUlIUHx9/RfsPHTpUQ4cOVU5Ojj7//HMtWbJEiYmJ6t27tw4cOHDZickbNmzQjBkzNGXKFPXv39/efujQIUlS9+7di93Py8vrCkcI4EoQdgA4zbhx45SQkKAJEyYoLCxM3t7estlsGjJkiAoLC4v0d3V1LfY4xbUbf5mgfCVCQ0PVrl07LVu2TCNGjNCyZcvk5uamQYMGXdVxvLy8dMcdd+iOO+5Q1apVtXTpUn3++ee69dZbL7lPWlqahg0bpjvuuENPPfWUw7aLvxZvvfWWAgMDi+xblo/UA9ci/kYBcJr33ntP0dHReu655+xt586dU1ZWlmk1jRgxQrGxsTpx4oQSExMVFRWlWrVqlfh47du319KlS3XixIlL9vnjjz/Ur18/+fj46H//93/l4uI4Y6Bx48aS/jsRukePHiWuBcCVYc4OAKdxdXUtcgXmpZdeUkFBgUkV/fdWlM1m0/jx4/XDDz/o7rvvvuw+Z8+eVXJycrHb1q9fL0l/++j6Aw88oO+//14rV64sNliFh4fLy8tLs2bNKvbR+FOnTl22RgBXjis7AJymV69eeuutt+Tt7a3Q0FAlJydr06ZNql27tmk1+fn5KSIiQitWrJCPj4+ioqIuu8/Zs2fVuXNnderUSREREapfv76ysrK0atUqffrpp+rTp4/atGlT7L7r1q3Tm2++qf79++vrr7/W119/bd9Wo0YN9enTR15eXoqLi9Pw4cPVtm1bDRkyRH5+fkpPT9e6devUpUsXvfzyy077NQCudYQdAE7zwgsvyNXVVW+//bbOnTunLl26aNOmTQoPDze1rhEjRmjt2rUaNGiQ3N3dL9vfx8dHr776qtatW6eEhARlZGTI1dVVTZs21TPPPKOHHnrokvtevCrz/vvv6/3333fYFhISoj59+kiS/vWvfykoKEhz5szRM888o7y8PP3jH//QzTffrHvuuafkgwVQhM0oyaw/AKhEPvzwQ/Xp00fbt2/XzTffbHY5AMoZYQeA5fXq1UvffvutDh8+7PBeHwDXBm5jAbCs5cuX6+uvv9a6dev0wgsvEHSAaxRXdgBYls1mU40aNTR48GDFx8fz/hrgGsXffACWxf/lAEi8ZwcAAFgcYQcAAFgat7H03++pOX78uGrWrMkERgAAKgnDMHT69GkFBQUV+VqWPyPsSDp+/HiRb1kGAACVw7Fjx1SvXr1LbifsSKpZs6ak//5ieXl5mVwNAAC4Ejk5Oapfv779c/xSCDuS/daVl5cXYQcAgErmclNQmKAMAAAsjbADAAAsjbDjBNOnT5fNZnNYmjVrZt9+//33q3HjxvLw8JCfn5/uuusufffdd/btS5YsKbL/xSUzM9OMIQEAYBnM2XGSG264QZs2bbKv//m19O3atdOwYcMUHBys3377TdOnT1fPnj2VlpYmV1dXDR48WBEREQ7HGzlypM6dOyd/f/9yGwMAAFZE2HGSKlWqKDAwsNht9913n/3nBg0a6KmnnlLr1q119OhR+xUfDw8Pe59Tp05py5Ytev3118u8bgAArI7bWE5y6NAhBQUFqVGjRho2bJjS09OL7Zebm6uEhAQ1bNjwku/2efPNN1W9enUNGDCgLEsGAOCaQNhxgo4dO2rJkiXasGGD4uLilJaWpptvvlmnT5+293nllVdUo0YN1ahRQ+vXr1dSUpLc3NyKPd7rr7+uf/3rXw5XewAAQMnYDL4WWDk5OfL29lZ2drZT3rOTlZWlkJAQzZ8/X6NHj5YkZWdnKzMzUydOnNCzzz6rn3/+WTt27FC1atUc9k1OTlbnzp21Z88etWvXrtS1AABgVVf6+c2cnTLg4+OjJk2a6PDhw/Y2b29veXt76/rrr1enTp1Uq1YtrVy5UkOHDnXY97XXXtONN95I0AEAwEm4jVUGzpw5oyNHjqhu3brFbjcMQ4ZhKC8vr8h+7777rv1qEAAAKD3CjhM8/PDD2rZtm44ePaqdO3eqb9++cnV11dChQ/XDDz9o9uzZSklJUXp6unbu3KmBAwfKw8NDd955p8Nx3nnnHV24cEF33323SSMBAMB6uI3lBD/99JOGDh2qX3/9VX5+furatat27dolPz8/5efn69NPP9Xzzz+v33//XQEBAbrlllu0c+fOIu/Qef3119WvXz/5+PiYMxAAACyICcpy/gRlAABQ9q7085vbWAAAwNIIOwAAwNKYs/M32k160+wSrkrKMyPMLgEAgAqHKzsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSCDsAAMDSTA0706dPl81mc1iaNWtm337u3DnFxMSodu3aqlGjhvr376+TJ086HCM9PV1RUVGqXr26/P39NWnSJF24cKG8hwIAACqoKmYXcMMNN2jTpk329SpV/q+kiRMnat26dVqxYoW8vb01duxY9evXTzt27JAkFRQUKCoqSoGBgdq5c6dOnDihESNGqGrVqpo1a1a5jwUAAFQ8poedKlWqKDAwsEh7dna2Xn/9dSUmJqp79+6SpISEBDVv3ly7du1Sp06dtHHjRn3zzTfatGmTAgICdOONN+rJJ5/U5MmTNX36dLm5uZX3cAAAQAVj+pydQ4cOKSgoSI0aNdKwYcOUnp4uSUpJSVF+fr569Ohh79usWTMFBwcrOTlZkpScnKyWLVsqICDA3ic8PFw5OTk6ePDgJc+Zl5ennJwchwUAAFiTqWGnY8eOWrJkiTZs2KC4uDilpaXp5ptv1unTp5WRkSE3Nzf5+Pg47BMQEKCMjAxJUkZGhkPQubj94rZLmT17try9ve1L/fr1nTswAABQYZh6GysyMtL+c6tWrdSxY0eFhITo3XfflYeHR5mdd8qUKYqNjbWv5+TkEHgAALAo029j/ZmPj4+aNGmiw4cPKzAwUOfPn1dWVpZDn5MnT9rn+AQGBhZ5OuvienHzgC5yd3eXl5eXwwIAAKypQoWdM2fO6MiRI6pbt67atWunqlWravPmzfbtqampSk9PV1hYmCQpLCxM+/fvV2Zmpr1PUlKSvLy8FBoaWu71AwCAisfU21gPP/ywevfurZCQEB0/flzTpk2Tq6urhg4dKm9vb40ePVqxsbHy9fWVl5eXxo0bp7CwMHXq1EmS1LNnT4WGhmr48OGaN2+eMjIy9PjjjysmJkbu7u5mDg0AAFQQpoadn376SUOHDtWvv/4qPz8/de3aVbt27ZKfn58kacGCBXJxcVH//v2Vl5en8PBwvfLKK/b9XV1dtXbtWo0ZM0ZhYWHy9PRUdHS0Zs6cadaQAABABWMzDMMwuwiz5eTkyNvbW9nZ2Q7zd9pNetPEqq5eyjMjzC4BAIByc6nP77+qUHN2AAAAnI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALI2wAwAALK3ChJ05c+bIZrNpwoQJ9rZz584pJiZGtWvXVo0aNdS/f3+dPHnSYb/09HRFRUWpevXq8vf316RJk3ThwoVyrh4AAFRUFSLs7N69W4sWLVKrVq0c2idOnKg1a9ZoxYoV2rZtm44fP65+/frZtxcUFCgqKkrnz5/Xzp07tXTpUi1ZskRTp04t7yEAAIAKyvSwc+bMGQ0bNkyvvvqqatWqZW/Pzs7W66+/rvnz56t79+5q166dEhIStHPnTu3atUuStHHjRn3zzTdatmyZbrzxRkVGRurJJ5/UwoULdf78ebOGBAAAKhDTw05MTIyioqLUo0cPh/aUlBTl5+c7tDdr1kzBwcFKTk6WJCUnJ6tly5YKCAiw9wkPD1dOTo4OHjxYPgMAAAAVWhUzT758+XLt3btXu3fvLrItIyNDbm5u8vHxcWgPCAhQRkaGvc+fg87F7Re3XUpeXp7y8vLs6zk5OSUdAgAAqOBMu7Jz7NgxjR8/Xm+//baqVatWrueePXu2vL297Uv9+vXL9fwAAKD8mBZ2UlJSlJmZqbZt26pKlSqqUqWKtm3bphdffFFVqlRRQECAzp8/r6ysLIf9Tp48qcDAQElSYGBgkaezLq5f7FOcKVOmKDs7274cO3bMuYMDAAAVhmlh5/bbb9f+/fu1b98++9K+fXsNGzbM/nPVqlW1efNm+z6pqalKT09XWFiYJCksLEz79+9XZmamvU9SUpK8vLwUGhp6yXO7u7vLy8vLYQEAANZk2pydmjVrqkWLFg5tnp6eql27tr199OjRio2Nla+vr7y8vDRu3DiFhYWpU6dOkqSePXsqNDRUw4cP17x585SRkaHHH39cMTExcnd3L/cxAQCAisfUCcqXs2DBArm4uKh///7Ky8tTeHi4XnnlFft2V1dXrV27VmPGjFFYWJg8PT0VHR2tmTNnmlg1AACoSGyGYRhmF2G2nJwceXt7Kzs72+GWVrtJb5pY1dVLeWaE2SUAAFBuLvX5/Vemv2cHAACgLBF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApZUo7HTv3l1ZWVlF2nNyctS9e/fS1gQAAOA0JQo7W7du1fnz54u0nzt3Tp9++ukVHycuLk6tWrWSl5eXvLy8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nGbNmjVGixYtDHd3d6NZs2bG4sWLzS7JqT7++GNDkpGammp2KU6Vk5NjjB8/3ggODjaqVatmNGrUyHjssceMvLw8s0u7apf7TEtISCh2+7Rp00yp12YYlfDVjQAAAFeI9+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAAABLI+wAqNQaNGig559/3r5us9m0atWqMj1nt27dNGHChDI9BwDnIewAcJqRI0fKZrMVWcryCzh3796t++67z2nHKygo0Jw5c9SsWTN5eHjI19dXHTt21GuvvWbv88EHH+jJJ5902jkBlC3rfOkIgAohIiJCCQkJDm1+fn5ldj5nH3vGjBlatGiRXn75ZbVv3145OTnas2ePfv/9d3sfX19fp54TQNniyg4Ap3J3d7d/2d/FxdXVVfPnz1fLli3l6emp+vXr68EHH9SZM2fs+y1ZskQ+Pj5au3atmjZtqurVq2vAgAE6e/asli5dqgYNGqhWrVp66KGHVFBQYN/vr7ex/qx79+4aO3asQ9upU6fk5uamzZs3F7vP6tWr9eCDD2rgwIFq2LChWrdurdGjR+vhhx+29/nzbaytW7cWezVr5MiR9v4ffvih2rZtq2rVqqlRo0aaMWOGLly4cJW/sgBKirADoFy4uLjoxRdf1MGDB7V06VJt2bJFjzzyiEOfs2fP6sUXX9Ty5cu1YcMGbd26VX379tVHH32kjz76SG+99ZYWLVqk995774rO+e9//1uJiYnKy8uzty1btkz/+Mc/1L1792L3CQwM1JYtW3Tq1KkrOkfnzp114sQJ+7JlyxZVq1ZNt9xyiyTp008/1YgRIzR+/Hh98803WrRokZYsWaKnn376io4PwAlM+fpRAJYUHR1tuLq6Gp6envZlwIABxfZdsWKFUbt2bfv6xW9J/vO3k99///1G9erVjdOnT9vbwsPDjfvvv9++HhISYixYsMC+LslYuXKlYRiG8ccffxi1atUy3nnnHfv2Vq1aGdOnT7/kGA4ePGg0b97ccHFxMVq2bGncf//9xkcffeTQ51LfDv/LL78YjRo1Mh588EF72+23327MmjXLod9bb71l1K1b95I1AHAu5uwAcKrbbrtNcXFx9nVPT09J0qZNmzR79mx99913ysnJ0YULF3Tu3DmdPXtW1atXlyRVr15djRs3tu8bEBCgBg0aqEaNGg5tmZmZV1RLtWrVNHz4cL3xxhsaNGiQ9u7dqwMHDmj16tWX3Cc0NFQHDhxQSkqKduzYoe3bt6t3794aOXKkwyTlv8rPz1f//v0VEhKiF154wd7+1VdfaceOHQ5XcgoKCoqMHUDZIewAcCpPT09dd911Dm1Hjx5Vr169NGbMGD399NPy9fXVZ599ptGjR+v8+fP2D/yqVas67Gez2YptKywsvOJ6/v3vf+vGG2/UTz/9pISEBHXv3l0hISF/u4+Li4s6dOigDh06aMKECVq2bJmGDx+uxx57TA0bNix2nzFjxujYsWP64osvVKXK//3TeubMGc2YMUP9+vUrsk+1atWueBwASo6wA6DMpaSkqLCwUM8995xcXP47VfDdd98tl3O3bNlS7du316uvvqrExES9/PLLV32M0NBQSVJubm6x2+fPn693331XO3fuVO3atR22tW3bVqmpqUUCIIDyQ9gBUOauu+465efn66WXXlLv3r21Y8cOxcfHl9v5//3vf2vs2LHy9PRU3759/7bvgAED1KVLF3Xu3FmBgYFKS0vTlClT1KRJEzVr1qxI/02bNumRRx7RwoULVadOHWVkZEiSPDw85O3tralTp6pXr14KDg7WgAED5OLioq+++koHDhzQU089VSbjBeCIp7EAlLnWrVtr/vz5mjt3rlq0aKG3335bs2fPLrfzDx06VFWqVNHQoUMve+soPDxca9asUe/evdWkSRNFR0erWbNm2rhxo8PtqYs+++wzFRQU6IEHHlDdunXty/jx4+3HW7t2rTZu3KgOHTqoU6dOWrBgwWVvpQFwHpthGIbZRQBAWTp69KgaN26s3bt3q23btmaXA6CcEXYAWFZ+fr5+/fVXPfzww0pLS9OOHTvMLgmACbiNBcCyduzYobp162r37t3lOkcIQMXClR0AAGBpXNkBAACWRtgBAACWRtgBAACWRtgBAACWRtgBAACWRtgBAACWRtgBAACWRtgBAACWRtgBAACW9v8AiXu0q4XWcowAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = sns.countplot(data=temp, x='Family Size')\n",
    "ax.bar_label(ax.containers[0])\n",
    "ax.set_title('Family Size');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "3e8bacec",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:15:59.815610Z",
     "start_time": "2022-04-27T07:15:59.008567Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAIjCAYAAAAJLyrXAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAY7JJREFUeJzt3XlYVeX+///XFmVQplQQSMCpRBTN6RhaZg4oqWk5R4ppdjKszJMZ5+Scig02mKF1Sq0kp9TUch5zTEnKKVNz6iOIJwUUEhD2749+7m87cFgILMDn47rWdbnv+15rvdeCiBf3GixWq9UqAAAAAMAtK2d2AQAAAABQ2hCkAAAAAMAgghQAAAAAGESQAgAAAACDCFIAAAAAYBBBCgAAAAAMIkgBAAAAgEEEKQAAAAAwiCAFAAAAAAYRpAAAN2WxWDRu3Djb5zlz5shisejkyZPFWsfJkydlsVg0Z86cYt3vnWjgwIGqUaNGke7j799XAFCaEKQAoIS6FlbyW1599VWzyyt0K1as0EMPPSRvb29VrFhRtWrVUu/evbV69WqzSyty+/fvV8+ePRUYGChnZ2fdfffd6tChg6ZPn252aQCA6yhvdgEAgBubMGGCatasadfWoEGDYq3hjz/+UPnyRfe/jLfeeksjR47UQw89pOjoaFWsWFHHjh3T+vXrNX/+fHXq1EmSFBgYqD/++EMVKlQoslqK244dO/Twww8rICBAQ4YMkY+Pj86cOaNdu3bpvffe0/PPP29KXR9//LFyc3NN2TcAlAYEKQAo4cLDw9WsWTNTa3B2di6ybV+9elUTJ05Uhw4dtHbt2jz9ycnJtn9bLJYircUMkyZNkoeHh/bs2SNPT0+7vr8e++1KT09XpUqVbnl8WQqrAFAUuLQPAEqpU6dO6bnnnlPdunXl4uKiKlWqqFevXnnuW7p2ieC2bdv0wgsvyMvLS56envrnP/+prKwspaSkaMCAAbrrrrt011136ZVXXpHVarXbxs3uZYmMjFTVqlWVnZ2dpy8sLEx169a97rr/+9//lJaWplatWuXb7+3tbfv33++R2rx583Uvf/z7/T2rVq3Sgw8+qEqVKsnNzU2dO3fWwYMHr1uXJO3du1cWi0Vz587N07dmzRpZLBatXLlSknTp0iUNHz5cNWrUkJOTk7y9vdWhQwf98MMPN9zH8ePHVb9+/Twh6mbH/ld///qMGzdOFotFhw4d0hNPPKG77rpLDzzwgN566y1ZLBadOnUqzzaio6Pl6OioixcvSrK/Ryo7O1uVK1fWU089lWe9tLQ0OTs76+WXX5YkZWVlacyYMWratKk8PDxUqVIlPfjgg9q0adMNzwMAlDYEKQAo4VJTU/W///3PbpGkPXv2aMeOHerbt6/ef/99Pfvss9qwYYPatGmjjIyMPNt5/vnndfToUY0fP16PPvqoPvroI40ePVpdu3ZVTk6OJk+erAceeEBvvvmmPv/8c0M19u/fX7///rvWrFlj156UlKSNGzfqySefvO663t7ecnFx0YoVK3ThwgVD+61Xr54+//xzu2X69OmqUKGCXQj5/PPP1blzZ7m6umrq1KkaPXq0Dh06pAceeOCGD8xo1qyZatWqpYULF+bpW7Bgge666y517NhRkvTss88qNjZWPXr00IcffqiXX35ZLi4uOnz48A2PITAwUPHx8Tpw4IChY78VvXr1UkZGhiZPnqwhQ4aod+/eslgs+R7PwoULFRYWprvuuitPX4UKFfTYY49p2bJlysrKsutbtmyZMjMz1bdvX0l/Bqv//ve/atOmjaZOnapx48bp/Pnz6tixoxISEgr9GAHANFYAQIk0e/Zsq6R8F6vVas3IyMizzs6dO62SrJ999lme7XTs2NGam5traw8NDbVaLBbrs88+a2u7evWqtXr16taHHnrIbruSrGPHjs2zzRMnTlitVqs1JyfHWr16dWufPn3s1ps2bZrVYrFYf/311xse65gxY6ySrJUqVbKGh4dbJ02aZI2Pj88z7sSJE1ZJ1tmzZ+e7ndzcXGuXLl2srq6u1oMHD1qtVqv10qVLVk9PT+uQIUPsxiYlJVk9PDzytP9ddHS0tUKFCtYLFy7Y2jIzM62enp7WQYMG2do8PDysUVFRN9xWftauXWt1cHCwOjg4WENDQ62vvPKKdc2aNdasrCy7cTc69r9/fcaOHWuVZO3Xr1+esaGhodamTZvatX3//fd5vm8iIyOtgYGBts9r1qyxSrKuWLHCbt1HHnnEWqtWLdvnq1evWjMzM+3GXLx40VqtWjW785Vf3QBQmjAjBQAl3IwZM7Ru3Tq7RZJcXFxsY7Kzs/X777+rTp068vT0zPdyssGDB8tisdg+t2jRQlarVYMHD7a1OTg4qFmzZvr1118N1ViuXDlFRERo+fLlunTpkq193rx5atmyZZ6HZfzd+PHjFRcXp8aNG2vNmjX6z3/+o6ZNm6pJkyY3ndH5q4kTJ2rlypWaM2eOgoODJUnr1q1TSkqK+vXrZzer5+DgoBYtWtz0krM+ffooOztbS5YssbWtXbtWKSkp6tOnj63N09NTu3fv1tmzZ2+5Xknq0KGDdu7cqUcffVQ//vij3njjDXXs2FF33323li9fbmhbf/fss8/maevTp4/i4+N1/PhxW9uCBQvk5OSkbt26XXdbbdu2VdWqVbVgwQJb28WLF7Vu3Tq78+Dg4CBHR0dJUm5uri5cuKCrV6+qWbNmN73MEQBKE4IUAJRw//jHP9S+fXu7RfrzSXpjxoyRv7+/nJycVLVqVXl5eSklJUWpqal5thMQEGD32cPDQ5Lk7++fp/3afTJGDBgwQH/88YeWLl0qSTpy5Iji4+PVv3//W1q/X79++u6773Tx4kWtXbtWTzzxhPbt26euXbvqypUrN11/9erVGj9+vKKjo9WjRw9b+9GjRyX9GQS8vLzslrVr1970gQ6NGjVSUFCQXYBYsGCBqlatqrZt29ra3njjDR04cED+/v76xz/+oXHjxt1yIG3evLmWLFmiixcv6vvvv1d0dLQuXbqknj176tChQ7e0jfzkF2B79eqlcuXK2Y7HarVq0aJFCg8Pl7u7+3W3Vb58efXo0UNff/21MjMzJUlLlixRdna2XZCSpLlz56phw4ZydnZWlSpV5OXlpW+++Sbf70sAKK0IUgBQSj3//POaNGmSevfurYULF2rt2rVat26dqlSpku9jqx0cHPLdTn7t1r89bOJWBAcHq2nTpvriiy8kSV988YUcHR3Vu3dvQ9txd3dXhw4dNG/ePEVGRur48ePavXv3Ddc5ceKEIiIi1KFDB73++ut2fdfOxeeff55nZm/dunX6+uuvb1pTnz59tGnTJv3vf/9TZmamli9frh49etg9Er5379769ddfNX36dPn5+enNN99U/fr1tWrVqls+dkdHRzVv3lyTJ09WbGyssrOztWjRIkmym038q5ycnOtu76+zltf4+fnpwQcftN0ntWvXLp0+fTpPGMpP3759denSJdsxLVy4UEFBQWrUqJFtzBdffKGBAweqdu3a+uSTT7R69WqtW7dObdu25XHqAMoUHn8OAKXU4sWLFRkZqbffftvWduXKFaWkpJhW04ABAzRixAglJiYqLi5OnTt3zvfhBbeqWbNmmjt3rhITE6875o8//tDjjz8uT09PffnllypXzv5vhLVr15b050Mtrs3mGdWnTx+NHz9eX331lapVq6a0tDTbwxX+ytfXV88995yee+45JScnq0mTJpo0aZLCw8MN7/PaI++vHfu18/j3r29+T+C7mT59+ui5557TkSNHtGDBAlWsWFFdu3a96XqtW7eWr6+vFixYoAceeEAbN27Uf/7zH7sxixcvVq1atbRkyRK78Dd27FjDdQJAScaMFACUUg4ODnlmjqZPn37DGYqi1q9fP1ksFr344ov69ddfb/i0vmsyMjK0c+fOfPuuzXzc6PHpzz77rH755RctXbo039DWsWNHubu7a/Lkyfk+nv38+fM3rbFevXoKCQnRggULtGDBAvn6+qp169a2/pycnDyXrXl7e8vPz892Gdz1bNq0Kd8ZwG+//VbS/zt2d3d3Va1aVVu3brUb9+GHH960/r/r0aOHHBwc9OWXX2rRokXq0qXLLb1jqly5curZs6dWrFihzz//XFevXs0zk3VthvOvx7R79+7rfo0BoLRiRgoASqkuXbro888/l4eHh4KDg7Vz506tX79eVapUMa0mLy8vderUSYsWLZKnp6c6d+5803UyMjLUsmVL3X///erUqZP8/f2VkpKiZcuW6bvvvlP37t3VuHHjfNf95ptv9Nlnn6lHjx766aef9NNPP9n6XF1d1b17d7m7uys2Nlb9+/dXkyZN1LdvX3l5een06dP65ptv1KpVK33wwQc3rbNPnz4aM2aMnJ2dNXjwYLuZr0uXLql69erq2bOnGjVqJFdXV61fv1579uyxmzHMz/PPP6+MjAw99thjCgoKUlZWlnbs2KEFCxaoRo0adu9uevrppxUTE6Onn35azZo109atW/XLL7/ctPa/8/b21sMPP6xp06bp0qVLt3RZ31/Pw/Tp0zV27FiFhISoXr16dv1dunTRkiVL9Nhjj6lz5846ceKEZs6cqeDgYF2+fNlwrQBQUhGkAKCUeu+99+Tg4KB58+bpypUratWqldavX297r5FZBgwYoJUrV6p3795ycnK66XhPT099/PHH+uabbzR79mwlJSXJwcFBdevW1ZtvvqkXXnjhuutem0366quv9NVXX9n1BQYGqnv37pKkJ554Qn5+foqJidGbb76pzMxM3X333XrwwQfzfclsfvr06aPXXntNGRkZeYJHxYoV9dxzz2nt2rVasmSJcnNzVadOHX344YcaOnToDbf71ltvadGiRfr222/10UcfKSsrSwEBAXruuef02muv2b2od8yYMTp//rwWL16shQsXKjw8XKtWrbJ7Z9at6tOnj9avXy83Nzc98sgjt7xey5Yt5e/vrzNnzuQbwAYOHKikpCTNmjVLa9asUXBwsL744gstWrRImzdvNlwnAJRUFmtB7igGAOA6vv76a3Xv3l1bt27Vgw8+aHY5AAAUCYIUAKBQdenSRYcPH9axY8eu+6Q5AABKOy7tAwAUivnz5+unn37SN998o/fee48QBQAo05iRAgAUCovFIldXV/Xp00czZ860e8cSAABlDf+XAwAUCv4uBwC4k/AeKQAAAAAwiCAFAAAAAAZxaZ+k3NxcnT17Vm5ubtwcDQAAANzBrFarLl26JD8/P7uXr/8dQUrS2bNn5e/vb3YZAAAAAEqIM2fOqHr16tftJ0hJcnNzk/TnyXJ3dze5GgAAAABmSUtLk7+/vy0jXA9BSrJdzufu7k6QAgAAAHDTW3542AQAAAAAGESQAgAAAACDCFIAAAAAYBD3SAEAAADXYbVadfXqVeXk5JhdCgqJg4ODypcvf9uvPSJIAQAAAPnIyspSYmKiMjIyzC4FhaxixYry9fWVo6NjgbdBkAIAAAD+Jjc3VydOnJCDg4P8/Pzk6Oh42zMYMJ/ValVWVpbOnz+vEydO6J577rnhS3dvhCB1G2JjYxUbG6uTJ09KkurXr68xY8YoPDxcJ0+eVM2aNfNdb+HCherVq5dd2++//65GjRrp//7v/3Tx4kV5enoWcfUAAAC4nqysLOXm5srf318VK1Y0uxwUIhcXF1WoUEGnTp1SVlaWnJ2dC7QdHjZxG6pXr66YmBjFx8dr7969atu2rbp166aDBw/K399fiYmJdsv48ePl6uqq8PDwPNsaPHiwGjZsaMJRAAAA4HoKOluBkq0wvq7MSN2Grl272n2eNGmSYmNjtWvXLtWvX18+Pj52/UuXLlXv3r3l6upq1x4bG6uUlBSNGTNGq1atKvK6AQAAANweglQhycnJ0aJFi5Senq7Q0NA8/fHx8UpISNCMGTPs2g8dOqQJEyZo9+7d+vXXX4urXAAAAAC3gbnK27R//365urrKyclJzz77rJYuXarg4OA84z755BPVq1dPLVu2tLVlZmaqX79+evPNNxUQEFCcZQMAAKCU2rx5sywWi1JSUop0PwMHDlT37t2LdB+lGUHqNtWtW1cJCQnavXu3hg4dqsjISB06dMhuzB9//KG4uDgNHjzYrj06Olr16tXTk08+WZwlAwAA4DadP39eQ4cOVUBAgJycnOTj46OOHTtq+/btRb7vli1bKjExUR4eHkW+r+IycOBAWSwWxcTE2LUvW7bM8NMSa9SooXfffbcQq8sfQeo2OTo6qk6dOmratKmmTJmiRo0a6b333rMbs3jxYmVkZGjAgAF27Rs3btSiRYtUvnx5lS9fXu3atZMkVa1aVWPHji22YwAAAIAxPXr00L59+zR37lz98ssvWr58udq0aaPff/+9wNu89vLfm3F0dJSPj0+pfBx7VlbWdfucnZ01depUXbx4sRgrKjiCVCHLzc1VZmamXdsnn3yiRx99VF5eXnbtX331lX788UclJCQoISFB//3vfyVJ3333naKiooqtZgAAANy6lJQUfffdd5o6daoefvhhBQYG6h//+Ieio6P16KOPSpJOnjwpi8WihIQEu/UsFos2b94s6f9dordq1So1bdpUTk5O+vTTT2WxWPTzzz/b7fOdd95R7dq17dZLSUlRWlqaXFxc8jywbOnSpXJzc7O9TPjMmTPq3bu3PD09VblyZXXr1s32Ch/pz/v9R4wYIU9PT1WpUkWvvPKKrFbrTc/FV199pfr168vJyUk1atTQ22+/bddfo0YNTZw4UQMGDJC7u7ueeeaZ626rffv28vHx0ZQpUwq8zzZt2ujUqVN66aWXZLFYijRsEqRuQ3R0tLZu3aqTJ09q//79io6O1ubNmxUREWEbc+zYMW3dulVPP/10nvVr166tBg0a2JZr752qV6+evL29i+04AAAAcOtcXV3l6uqqZcuW5fkDekG8+uqriomJ0eHDh9WzZ081a9ZM8+bNsxszb948PfHEE3nWdXd3V5cuXRQXF5dnfPfu3VWxYkVlZ2erY8eOcnNz03fffaft27fL1dVVnTp1ss0Qvf3225ozZ44+/fRTbdu2TRcuXNDSpUtvWHd8fLx69+6tvn37av/+/Ro3bpxGjx6tOXPm2I1766231KhRI+3bt0+jR4++7vYcHBw0efJkTZ8+Xb/99luB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ys/PTxaLRcuWLbPrt1qtGjNmjHx9feXi4qL27dvr6NGjdmMuXLigiIgIubu7y9PTU4MHD9bly5eL8SgAAAAA3GlMDVLp6elq1KiRZsyYkW//G2+8offff18zZ87U7t27ValSJXXs2FFXrlyxjYmIiNDBgwe1bt06rVy5Ulu3btUzzzxTXIcAAAAA4A5U3sydh4eHKzw8PN8+q9Wqd999V6+99pq6desmSfrss89UrVo1LVu2TH379tXhw4e1evVq7dmzR82aNZMkTZ8+XY888ojeeust+fn5FduxAAAAALhzlNh7pE6cOKGkpCS1b9/e1ubh4aEWLVpo586dkqSdO3fK09PTFqIkqX379ipXrpx279593W1nZmYqLS3NbgEAAACAW1Vig1RSUpIkqVq1anbt1apVs/UlJSXJ29vbrr98+fKqXLmybUx+pkyZIg8PD9vi7+9fyNUDAAAAKMtKbJAqStHR0UpNTbUtZ86cMbsklBI5OTkaPXq0atasKRcXF9WuXVsTJ06U1Wq1jTl37pwGDhwoPz8/VaxYUZ06dcrzkBQAAACUbqbeI3UjPj4+kv78pdTX19fWfu7cOd133322McnJyXbrXb16VRcuXLCtnx8nJyc5OTkVftEo86ZOnarY2FjNnTtX9evX1969e/XUU0/Jw8NDL7zwgqxWq7p3764KFSro66+/lru7u6ZNm6b27dvr0KFDqlSpktmHAAAAgEJQYmekatasKR8fH23YsMHWlpaWpt27dys0NFSSFBoaqpSUFMXHx9vGbNy4Ubm5uWrRokWx14yyb8eOHerWrZs6d+6sGjVqqGfPngoLC9P3338vSTp69Kh27dql2NhYNW/eXHXr1lVsbKz++OMPffnllyZXDwAAgMJiapC6fPmyEhISlJCQIOnPB0wkJCTo9OnTslgsGj58uF5//XUtX75c+/fv14ABA+Tn56fu3btLkurVq6dOnTppyJAh+v7777V9+3YNGzZMffv25Yl9KBItW7bUhg0b9Msvv0iSfvzxR23bts329MnMzExJkrOzs22dcuXKycnJSdu2bSv+ggEAAFAkTL20b+/evXr44Ydtn0eMGCFJioyM1Jw5c/TKK68oPT1dzzzzjFJSUvTAAw9o9erVdr+kzps3T8OGDVO7du1Urlw59ejRQ++//36xHwvuDK+++qrS0tIUFBQkBwcH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y5cv29abM2eOPD09tXLlStWtW1cVK1ZUz549lZGRoblz56pGjRq666679MILLygnJ8e23t8v7furtm3batiwYXZt58+fl6OjozZs2JDvOsuXL9dzzz2nXr16qWbNmmrUqJEGDx6sl19+2Tbmr5f2bd68Od9ZuIEDB9rGf/3112rSpImcnZ1Vq1YtjR8/XlevXjV4ZgEAxYEgBQAoUcqVK6f3339fBw8e1Ny5c7Vx40a98sordmMyMjL0/vvva/78+Vq9erU2b96sxx57TN9++62+/fZbff7555o1a5YWL158S/t8+umnFRcXp8zMTFvbF198obvvvltt27bNdx0fHx9t3LhR58+fv6V9tGzZUomJibZl48aNcnZ2VuvWrSVJ3333nQYMGKAXX3xRhw4d0qxZszRnzhxNmjTplrYPACheBCkAgClWrlwpV1dX29KrVy9J0vDhw/Xwww+rRo0aatu2rV5//XUtXLjQbt3s7GzFxsaqcePGat26tXr27Klt27bpk08+UXBwsLp06aKHH35YmzZtuqVaHn/8cUl/zghdM2fOHNu9XPmZNm2azp8/Lx8fHzVs2FDPPvusVq1add19ODo62mbeKlSooKefflqDBg3SoEGDJP15qeCrr76qyMhI1apVSx06dNDEiRM1a9asWzoGAEDx4h4pAIApHn74YcXGxto+V6pUSZK0fv16TZkyRT///LPS0tJ09epVXblyRRkZGapYsaIkqWLFiqpdu7Zt3WrVqqlGjRpydXW1a0tOTr6lWpydndW/f399+umn6t27t3744QcdOHBAy5cvv+46wcHBOnDggOLj47V9+3Zt3bpVXbt21cCBA+0eOPF32dnZ6tGjhwIDA/Xee+/Z2n/88Udt377dbgYqJycnz7EDAEoGghQAwBSVKlVSnTp17NpOnjypLl26aOjQoZo0aZIqV66sbdu2afDgwcrKyrKFiQoVKtitZ7FY8m3Lzc295Xqefvpp3Xffffrtt980e/ZstW3bVoGBgTdcp1y5cmrevLmaN2+u4cOH64svvlD//v31n//8RzVr1sx3naFDh+rMmTP6/vvvVb78//vf8OXLlzV+/Hjb7NhfOTs73/JxAACKB0EKAFBixMfHKzc3V2+//bbKlfvz6vO/X9ZXVEJCQtSsWTN9/PHHiouL0wcffGB4G8HBwZKk9PT0fPunTZumhQsXaseOHapSpYpdX5MmTXTkyJE84RIAUDIRpAAAJUadOnWUnZ2t6dOnq2vXrtq+fbtmzpxZbPt/+umnNWzYMFWqVEmPPfbYDcf27NlTrVq1UsuWLeXj46MTJ04oOjpa9957r4KCgvKMX79+vV555RXNmDFDVatWVVJSkiTJxcVFHh4eGjNmjLp06aKAgAD17NlT5cqV048//qgDBw7o9ddfL5LjBQAUHA+bAACUGI0aNdK0adM0depUNWjQQPPmzdOUKVOKbf/9+vVT+fLl1a9fv5teTtexY0etWLFCXbt21b333qvIyEgFBQVp7dq1dpfsXbNt2zbl5OTo2Wefla+vr2158cUXbdtbuXKl1q5dq+bNm+v+++/XO++8c9PLCwEA5rBYrVar2UUAAFASnDx5UrVr19aePXvUpEkTs8sBAJRgBCkAwB0vOztbv//+u15++WWdOHFC27dvN7skAEAJx6V9AIA73vbt2+Xr66s9e/YU6z1ZAIDSixkpAAAAADCIGSkAAAAAMIggBQAAAAAGEaQAAAAAwCCCFAAAAAAYRJACAAAAAIMIUgAAAABgEEEKAAAAAAwiSAEAAACAQf8flLMJQntor00AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "### Family Size vs Survived\n",
    "plt.figure(figsize=(10,6))\n",
    "ax = sns.countplot(data=temp,x='Family Size',hue='Survived');\n",
    "ax.bar_label(ax.containers[0]);\n",
    "ax.bar_label(ax.containers[1]);\n",
    "plt.legend(title='Survived or Not', loc='upper right', labels=['No', 'Yes']);\n",
    "plt.title('Family Size vs Survival')\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "caa3896c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:19:42.311120Z",
     "start_time": "2022-04-27T07:19:42.299901Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['S', 'C', 'Q', nan], dtype=object)"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Embarked 登船港口\n",
    "temp.Embarked.unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "805027c9",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:19:52.248487Z",
     "start_time": "2022-04-27T07:19:51.909272Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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37591gcffGBFR0dbzz77rGVZlnX8+HHr0UcftVq1amXl5uZaubm51vHjx732a1mWdfToUSsmJsbq27evtXXrVmvNmjVW06ZNrdTUVM9xUlNTLbvdbj300EPWzp07rQ8//NCqW7euNXv27LN+poBJCDuAof4z7Bw4cMDq1KmTdckll1jFxcVWp06drEGDBnlt069fP6t3796edUnW8OHDz7rfM/nzn/9s3XjjjV5tGRkZVkJCgmf9kUcesbp06XLW/cyZM8eSZIWGhnotPXv29Izp0qWLde2113rWT506ZYWGhlr9+/f3tOXm5lqSrMzMTK95LFiwwDPm0KFDVkhIiLVw4cIz1tOnTx/r0Ucf9Tr21VdfXW6cJGvRokXWn//8Zys+Pt766aefzjrPqVOnWomJiZ71cePGWW3atKlwv6fDzuzZs60GDRpYR48e9fR/9NFHlp+fn+V2uy3L+nfYady4sXXq1CnPmH79+ll33XXXWesBTMI9O4DhLr30UlmWpePHj6tNmzZavHixgoKCtHPnTg0ePNhrbOfOnfXSSy95tbVr165Sx925c6duvfXWcvufNm2aSktL/9A9Q/Xq1dM333zj1RYSEuK1ftVVV3n+7e/vr4iICLVu3drTdvqyV35+vtd2LpfL8+/w8HC1aNFCO3fulCSVlpZq0qRJevfdd/Xzzz+rpKRExcXFqlu3rtc+EhMTK6x7xIgRCg4O1saNG9WwYUOvvoULF2r69Onau3evjh49qlOnTslut5/1c/hPO3fuVJs2bRQaGupp69y5s8rKypSdne2Zc6tWrbw+75iYGG3duvUPHQu4kBF2AMOtW7dOdrtdUVFRqlev3h/e/rc/pL7i5+enZs2anXVMYGCg17rNZvNqO31Dc1lZ2Tkfd+rUqXrppZc0bdo0tW7dWqGhoRo+fLhKSkq8xp3pM7rxxhv1zjvvaOXKlUpJSfG0Z2ZmKiUlRePHj1dSUpIcDocWLFjgdU9TVaros/kjnwNwoeMGZcBwTZs21eWXX14u6MTHx2v9+vVebevXr1dCQsJZ93f6SaPS0tKzjjvT/q+44opKPQlWXTZu3Oj595EjR7R7927Fx8dL+ne9t956q+699161adNGl112mXbv3n3O+77llls0f/58/fd//7cWLFjgad+wYYMaN26sJ598Uu3atVPz5s31z3/+02vboKCgc/qMv/vuOx07dszTtn79evn5+alFixbnXCdgOsIOcJHKyMjQ3LlzNXPmTO3Zs0cvvPCC3n//fT322GNn3a5x48ay2WxatmyZDh486PXkz289+uijWrNmjSZOnKjdu3dr3rx5+tvf/va7+6+IZVlyu93llqo4OzFhwgStWbNG27Zt03333aeGDRvqtttukyQ1b95cq1ev1oYNG7Rz5049+OCDysvL+0P7v/322/Xmm2/q/vvv13vvvefZb05OjhYsWKC9e/dq+vTpWrJkidd2TZo00b59+7R582b961//UnFxcbl9p6SkqE6dOkpNTdW2bdv02WefadiwYerfv7/X02rAxY6wA1ykbrvtNr300kt67rnn1KpVK/3973/XnDlzzvoIuCRdcsklGj9+vJ544glFR0dr6NChFY675ppr9O6772rBggW68sorNXbsWE2YMOGsj6qfSVFRkWJiYsot/3n/TWU888wzeuSRR5SYmCi3260PP/zQc/Zq9OjRuuaaa5SUlKSuXbvK6XR6gtAfcccdd2jevHnq37+/3n//fd1yyy0aMWKEhg4dqrZt22rDhg0aM2aM1zbJycnq2bOnrr/+ekVGRpZ75F2S6tatq5UrV+rw4cNq37697rjjDt1www3629/+VqnPAjCVzbIsy9dFAAAAVBfO7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaP8P+1R3nuMaVJwAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = sns.countplot(data=temp,x='Embarked');\n",
    "ax.bar_label(ax.containers[0]);\n",
    "ax.set_xlabel(' Port of Embarkation');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "fc9d3805",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:20:00.669076Z",
     "start_time": "2022-04-27T07:20:00.150048Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAIjCAYAAAAJLyrXAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAX2xJREFUeJzt3XlcFXX////nEWTf3ABJRHNDXBNNj3a5Ky5ZXVJqeiUuaRlWaplfyt1ya9Est8rUTC/NSkvLNYXKsAw1zdRLDZdSxFTAJRZhfn/083w6AeogcFAf99ttbjfmPe+Zec05gjx5z7yPxTAMQwAAAACAG1bK0QUAAAAAwK2GIAUAAAAAJhGkAAAAAMAkghQAAAAAmESQAgAAAACTCFIAAAAAYBJBCgAAAABMIkgBAAAAgEkEKQAAAAAwiSAFAEXk4sWLevzxxxUYGCiLxaJhw4Y5uiQtWrRIFotFP/74Y7Gcr0qVKrr//vuL/Dz9+vVTlSpVivw8N+vVV1/V3XffLScnJzVs2FCSdOXKFb3wwgsKDg5WqVKl9NBDDzm0Rvyfq98vR48eLbJztG7dWq1bty6y4wMoOgQpACXS1V9gri5ubm6qWbOmhg4dqtOnTxfquSZPnqzVq1cX6jGvHnfRokUaMmSIlixZosceeyzfvlWqVLG73r8vnTp1KvTabkUnT57U+PHjtXv3bkeXYnP06NF83zeLxaKpU6fa+m7cuFEvvPCCWrRooYULF2ry5MmSpPfff1+vvvqqHn74YS1evFjDhw8v9DqXLVummTNnmtonKytLs2bNUpMmTeTt7S0vLy81adJEs2bNUlZWVqHXeObMGT377LMKDQ2Vu7u7/P39de+992rUqFG6ePFioZ8PAG6Ws6MLAIBrmThxoqpWrar09HR9++23mjt3rr788kv9/PPP8vDwKJRzTJ48WQ8//HChjwRs2bJFzZo107hx426of8OGDfXcc8/lag8KCirUum5VJ0+e1IQJE1SlShXbaM5V7777rnJychxTmKRHH31UXbp0ydV+zz332L7esmWLSpUqpQULFsjFxcWu/a677tKMGTOKrL5ly5bp559/vuFR0UuXLqlr166Ki4vT/fffr379+qlUqVJav369nn32WX366af64osv5OnpWSj1nTt3To0bN1ZaWpoGDBig0NBQnT17Vnv27NHcuXM1ZMgQeXl5Fcq5zHjsscfUq1cvubq6Fvu5AZR8BCkAJVrnzp3VuHFjSdLjjz+ucuXK6Y033tBnn32mRx99tMDHNQxD6enpcnd3L6xSc0lOTlZYWNgN97/rrrv0n//8p8jqKU6XL18utKB7I0qXLl1s58pLo0aNrvveJScny93d3S5EXW338/MrwurMGzFihOLi4vTWW29p6NChtvYhQ4Zo9uzZGjp0qJ5//nnNnTu3UM63YMECHT9+XNu2bVPz5s3ttqWlpeV6zQoqPT1dLi4uKlXqxm7IcXJykpOTU6GcG8Dth1v7ANxS2rZtK0lKTEyU9NfzJZMmTVK1atXk6uqqKlWq6MUXX1RGRobdflef1dmwYYMaN24sd3d3zZ8/XxaLRZcuXdLixYttt2P169fvmjUkJydr4MCBCggIkJubmxo0aKDFixfbtsfGxspisSgxMVFffPGF7biF8ZxFv3795OXlpePHj+v++++Xl5eX7rrrLs2ePVuStHfvXrVt21aenp4KCQnRsmXL8jzO5cuX9cQTT6hcuXLy8fFR3759df78ebs+n332mbp27aqgoCC5urqqWrVqmjRpkrKzs+36tW7dWnXr1lVCQoJatmwpDw8Pvfjii/lew+LFi+Xs7KyRI0dK+ms04vnnn1e9evXk5eUlHx8fde7cWT/99JNtn9jYWDVp0kSS1L9/f9trumjRItvr8s9npC5duqTnnntOwcHBcnV1Va1atfTaa6/JMAy7fhaLRUOHDtXq1atVt25dubq6qk6dOlq/fn2+12CWxWLRwoULdenSJbvaLRaLtm7dqn379tnaY2NjJUk5OTmaOXOm6tSpIzc3NwUEBOiJJ57I9T5J0rp169SqVSt5e3vLx8dHTZo0sb33rVu31hdffKFjx47ZznGt58l+++03LViwQG3btrULUVdFR0erTZs2eu+99/Tbb7/ZXWNBX8cjR47IyclJzZo1y7XNx8dHbm5utvUqVark+T36z2eNrn4fLl++XKNHj9Zdd90lDw8P7dy5UxaLxe579qoNGzbIYrFo7dq1knI/I3X//ffr7rvvzvMarFar7Y8+krRw4UK1bdtW/v7+cnV1VVhYWKEFTwAlAyNSAG4pR44ckSSVK1dO0l+jVIsXL9bDDz+s5557Tt9//72mTJmi/fv3a9WqVXb7Hjx4UI8++qieeOIJDRo0SLVq1dKSJUv0+OOP695779XgwYMlSdWqVcv3/H/++adat26tw4cPa+jQoapatapWrlypfv36KSUlRc8++6xq166tJUuWaPjw4apUqZLtdr0KFSpc89qysrL0xx9/5Gr39PS0GznLzs5W586d1bJlS02fPl1Lly7V0KFD5enpqZdeekl9+vRR9+7dNW/ePPXt21dWq1VVq1a1O+bQoUPl5+en8ePH6+DBg5o7d66OHTtm++VT+uuXSC8vL40YMUJeXl7asmWLxo4dq7S0NL366qt2xzt79qw6d+6sXr166T//+Y8CAgLyvMZ33nlHTz75pF588UW9/PLLkqRff/1Vq1ev1iOPPKKqVavq9OnTmj9/vlq1aqVffvlFQUFBql27tiZOnKixY8dq8ODB+te//iVJuUYvrjIMQw888IC2bt2qgQMHqmHDhtqwYYNGjhyp33//PddtdN9++60+/fRTPfXUU/L29tasWbMUGRmp48eP2/6tXcvly5fzfO/8/Pzk7OysJUuW6J133tEPP/yg9957T9Jft/0tWbJEr7zyii5evKgpU6ZIkmrXri1JeuKJJ7Ro0SL1799fzzzzjBITE/X2229r165d2rZtm20UbtGiRRowYIDq1KmjmJgY+fn5adeuXVq/fr169+6tl156Sampqfrtt99s132t2+TWrVun7Oxs9e3bN98+ffv21datW7V+/Xo9/vjjN/06hoSEKDs7W0uWLFFUVFS+/Qpi0qRJcnFx0fPPP6+MjAyFhYXp7rvv1kcffZTrXCtWrFCZMmUUERGR57F69uypvn37aseOHbZgL0nHjh3T9u3b7b4v5s6dqzp16uiBBx6Qs7Oz1qxZo6eeeko5OTmKjo4u1GsE4CAGAJRACxcuNCQZmzdvNs6cOWOcOHHCWL58uVGuXDnD3d3d+O2334zdu3cbkozHH3/cbt/nn3/ekGRs2bLF1hYSEmJIMtavX5/rXJ6enkZUVNQN1TVz5kxDkvHhhx/a2jIzMw2r1Wp4eXkZaWlpdufs2rXrDR33an15LVOmTLH1i4qKMiQZkydPtrWdP3/ecHd3NywWi7F8+XJb+4EDBwxJxrhx42xtV1/X8PBwIzMz09Y+ffp0Q5Lx2Wef2douX76cq84nnnjC8PDwMNLT021trVq1MiQZ8+bNy/O6rr4Gb775pmGxWIxJkybZ9UlPTzeys7Pt2hITEw1XV1dj4sSJtrYdO3YYkoyFCxfmOk9UVJQREhJiW1+9erUhyXj55Zft+j388MOGxWIxDh8+bGuTZLi4uNi1/fTTT4Yk46233sp1rn/Wmd/7JsmIj4+3q9HT0zPXMVq1amXUqVPHru2bb74xJBlLly61a1+/fr1de0pKiuHt7W00bdrU+PPPP+365uTk2L7u2rWr3etzLcOGDTMkGbt27cq3z86dOw1JxogRI2xtN/M6JiUlGRUqVDAkGaGhocaTTz5pLFu2zEhJScnVNyQkJM/v11atWhmtWrWyrW/dutWQZNx99925/i3HxMQYpUuXNs6dO2dry8jIMPz8/IwBAwbY2q5+vyQmJhqGYRipqamGq6ur8dxzz9kdb/r06YbFYjGOHTtma8vr+yciIsK4++67r1k3gFsHt/YBKNHat2+vChUqKDg4WL169ZKXl5dWrVqlu+66S19++aWkv57n+LurI0BffPGFXXvVqlXz/Uvzjfryyy8VGBho93xW6dKl9cwzz+jixYuKi4sr8LGbNm2qTZs25Vryehbs76MAfn5+qlWrljw9PdWjRw9be61ateTn56dff/011/6DBw+2e65oyJAhcnZ2tr2mkuxGwS5cuKA//vhD//rXv3T58mUdOHDA7niurq7q379/vtc2ffp0Pfvss5o2bZpGjx6da9+rz6xkZ2fr7Nmz8vLyUq1atbRz5858j3ktX375pZycnPTMM8/YtT/33HMyDEPr1q2za2/fvr3dSGT9+vXl4+OT52uXl8GDB+f53pl5Ru7vVq5cKV9fX3Xo0EF//PGHbQkPD5eXl5e2bt0qSdq0aZMuXLig//f//p/d7W+SbCOLZl24cEGS5O3tnW+fq9vS0tLs2gv6OgYEBOinn37Sk08+qfPnz2vevHnq3bu3/P39NWnSpFy3Y5oRFRWV61nInj17KisrS59++qmtbePGjUpJSVHPnj3zPdbV204/+ugju5pWrFihZs2aqXLlyra2v58zNTVVf/zxh1q1aqVff/1VqampBb4eACUHt/YBKNFmz56tmjVrytnZWQEBAapVq5btl+5jx46pVKlSql69ut0+gYGB8vPz07Fjx+za/3l7W0EcO3ZMNWrUyPWw+tXbsf55TjPKly+v9u3bX7efm5tbrtsEfX19ValSpVy/PPv6+ub5TE2NGjXs1r28vFSxYkW757j2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xk0f7//9v/+nqVOnav/+/Xr44YfVuHFjLV261K7P0qVL1bt371z7+vj46P7779eyZcty9X/ooYfk4eGhrKwsRUREyNvbW9988422bdsmLy8vderUyTZC9Prrr2vRokV6//339e233+rcuXNatWrVNetOSEhQjx491KtXL+3du1fjx4/XmDFjtGjRIrt+r732mho0aKBdu3ZpzJgx+R7PyclJkydP1ltvvaXffvutQOf89NNPValSJU2cOFGnTp3SqVOnrnkNN8WAkZqaakgyUlNTHV1KidOqVSvj2WefNQzDMLZu3WpIynNJTEy0289qtRq9e/cu/oIBAAAKwZ9//mn88ssvxp9//pnn9o8//tgoU6aM4ebmZjRv3tyIiYkxfvrpJ9v2xMREQ5Kxa9cuW9v58+cNScbWrVsNw/i/361Wr15td+wZM2YY1apVs60fPHjQkGTs37/fbr/z588bhmEYq1atMry8vIxLly4ZhvHX77Zubm7GunXrDMMwjCVLlhi1atUycnJybMfMyMgw3N3djQ0bNhiGYRgVK1Y0pk+fbtuelZVlVKpUyXjwwQfzfY169+5tdOjQwa5t5MiRRlhYmG09JCTEeOihh/I9xlVRUVG2czVr1swYMGCA7dr+Hllu9JwzZsy45vmu9f7eaDZgRArXFBsba3tYr3Xr1jIMI8+lSpUqdvt99913uf6SAgAAcLuIjIzUyZMn9fnnn6tTp06KjY1Vo0aNco3G3IjGjRvbrffq1UtHjx7V9u3bJf01utSoUSOFhobmuX+XLl1UunRpff7555L+uvXNx8fH9lE2P/30kw4fPixvb2/baFrZsmWVnp6uI0eOKDU1VadOnVLTpk1tx3R2ds5V1z/t379fLVq0sGtr0aKFDh06ZHe30vWO80/Tpk3T4sWLtX///gKfszgQpAAAAIACcHNzU4cOHTRmzBh999136tevn8aNGydJKlXqr1+zjb89Z5SVlZXncTw9Pe3WAwMD1bZtW9vtesuWLVOfPn3yrcPFxUUPP/ywXf+ePXvaPufz4sWLCg8Pt3sOfvfu3frf//6X5+2Che2f13c9LVu2VEREhGJiYoqoosJBkAIAAAAKQVhYmC5duiRJqlChgiTZPaPz94knrqdPnz5asWKF4uPj9euvv6pXr17X7b9+/Xrt27dPW7ZssQtejRo10qFDh+Tv76/q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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "### Port of Embarkation vs Survived\n",
    "plt.figure(figsize=(10,6))\n",
    "ax = sns.countplot(data=temp,x='Embarked',hue='Survived');\n",
    "ax.bar_label(ax.containers[0]);\n",
    "ax.bar_label(ax.containers[1]);\n",
    "plt.legend(title='Survived or Not', loc='upper right', labels=['No', 'Yes']);\n",
    "plt.title('Port of Embarkation Effect On Survival')\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "65348034",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:22:03.841104Z",
     "start_time": "2022-04-27T07:22:03.830380Z"
    }
   },
   "outputs": [],
   "source": [
    "# EDA结论\n",
    "# EDA Analysis Results\n",
    "# Based On The Dataset Only 40% People Were Able To Survived The Disaster.\n",
    "# Mostly Childrens Are Being Rescued.\n",
    "# People Above Age 20 had a chance of 35% of Being Survived From The Disaster.\n",
    "# People Paid High Fare and Class Means VIPs Are Given Priority For Rescued.\n",
    "# Out of Male and Females, Almost 75% Femals Survived The Disaster.\n",
    "# People Traveling Alone or With A Smaller Family Size Upto 2 children had high chances of survival.\n",
    "# Family Size Under 5 Had Higher Chance of Survival On Titanic Disaster.\n",
    "# People Traveling Alone had approx 43% Chances of Survival.\n",
    "# Family with Size 5+ Had Lesser Chance of Complete Survival On Titanic Disaster.\n",
    "# 根据数据集，只有 40% 的人能够在灾难中幸存下来。\n",
    "# 大多数儿童正在获救。\n",
    "# 20 岁以上的人有 35% 的几率从灾难中幸存下来。\n",
    "# 人们支付高票价和等级意味着 VIP 优先获救。\n",
    "# 在男性和女性中，几乎 75% 的女性在灾难中幸存下来。\n",
    "# 独自旅行或与多达 2 名儿童一起旅行的人有很高的生存机会。\n",
    "# 5个成员以下的家庭在泰坦尼克号灾难中的生存几率更高。\n",
    "# 独自旅行的人有大约 43% 的生存机会。\n",
    "# 5个成员以上的家庭在泰坦尼克号灾难中完全生存的机会较小。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "add63f0d-aa4d-4a03-9346-fe4e39b84d25",
   "metadata": {},
   "source": [
    "## 数据预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "20e4591c-f0c0-40a7-a6cc-13cf07930d42",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T06:16:05.279978Z",
     "start_time": "2022-04-27T06:16:05.228241Z"
    }
   },
   "outputs": [],
   "source": [
    "df_labeled = pd.read_csv ('DataSet/LabeledData.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "c08e1f36-c26a-4132-a27e-dc87f24cc6b6",
   "metadata": {},
   "outputs": [],
   "source": [
    "def preprocess_data(data):\n",
    "    # Let's Start By Dropping `PassengerID` `Name` `Ticket` `Cabin` \n",
    "    # 删除关联性不大的`PassengerID` `Name` `Ticket` `Cabin`列\n",
    "    data = data.drop(['PassengerId','Name','Ticket','Cabin'],axis=1)\n",
    "    \n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "6a9086a0-0d10-4b8b-86e5-211bbf78b173",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>886</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>male</td>\n",
       "      <td>27.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>19.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>23.4500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>891 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Survived  Pclass     Sex   Age  SibSp  Parch     Fare Embarked\n",
       "0           0       3    male  22.0      1      0   7.2500        S\n",
       "1           1       1  female  38.0      1      0  71.2833        C\n",
       "2           1       3  female  26.0      0      0   7.9250        S\n",
       "3           1       1  female  35.0      1      0  53.1000        S\n",
       "4           0       3    male  35.0      0      0   8.0500        S\n",
       "..        ...     ...     ...   ...    ...    ...      ...      ...\n",
       "886         0       2    male  27.0      0      0  13.0000        S\n",
       "887         1       1  female  19.0      0      0  30.0000        S\n",
       "888         0       3  female   NaN      1      2  23.4500        S\n",
       "889         1       1    male  26.0      0      0  30.0000        C\n",
       "890         0       3    male  32.0      0      0   7.7500        Q\n",
       "\n",
       "[891 rows x 8 columns]"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_labeled = preprocess_data(df_labeled)\n",
    "df_labeled"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "32d37624-3434-4493-a3f0-b30185bf2e7e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "存在缺失值的列：\n",
      "Survived      0\n",
      "Pclass        0\n",
      "Sex           0\n",
      "Age         177\n",
      "SibSp         0\n",
      "Parch         0\n",
      "Fare          0\n",
      "Embarked      2\n",
      "dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# 统计每列缺失值的数量\n",
    "missing_values = df_labeled.isnull().sum()\n",
    "\n",
    "# 输出存在缺失值的列\n",
    "print(\"存在缺失值的列：\")\n",
    "# print(missing_values[missing_values > 0])\n",
    "print(missing_values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "af84c8ba-e247-4a93-b009-6d27fc5d17df",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "删除 'age' 列为空的行后的 DataFrame:\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>709</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>39.0</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>29.1250</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>710</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>male</td>\n",
       "      <td>27.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>711</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>19.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>712</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>713</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>714 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Survived  Pclass     Sex   Age  SibSp  Parch     Fare Embarked\n",
       "0           0       3    male  22.0      1      0   7.2500        S\n",
       "1           1       1  female  38.0      1      0  71.2833        C\n",
       "2           1       3  female  26.0      0      0   7.9250        S\n",
       "3           1       1  female  35.0      1      0  53.1000        S\n",
       "4           0       3    male  35.0      0      0   8.0500        S\n",
       "..        ...     ...     ...   ...    ...    ...      ...      ...\n",
       "709         0       3  female  39.0      0      5  29.1250        Q\n",
       "710         0       2    male  27.0      0      0  13.0000        S\n",
       "711         1       1  female  19.0      0      0  30.0000        S\n",
       "712         1       1    male  26.0      0      0  30.0000        C\n",
       "713         0       3    male  32.0      0      0   7.7500        Q\n",
       "\n",
       "[714 rows x 8 columns]"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 删除Age为空的行\n",
    "# 删除 'Age' 列为空的行,重新编排索引，并删除旧的索引列\n",
    "df_labeled = df_labeled.dropna(subset=['Age']).reset_index(drop=True)\n",
    "\n",
    "# 打印处理后的 DataFrame\n",
    "print(\"\\n删除 'age' 列为空的行后的 DataFrame:\")\n",
    "\n",
    "df_labeled"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "6d263bbe-c784-4848-a3ad-2fed4607ec7b",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "存在缺失值的行号：\n",
      "Index([46, 662], dtype='int64')\n"
     ]
    }
   ],
   "source": [
    "# 找出存在缺失值的行\n",
    "# missing_rows = df_labeled[df_labeled.isnull().any(axis=1)]\n",
    "missing_rows = df_labeled[df_labeled['Embarked'].isnull()]\n",
    "# 输出存在缺失值的行号\n",
    "print(\"存在缺失值的行号：\")\n",
    "print(missing_rows.index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "73bb6c0e-c239-4c60-a953-48a235d8ccde",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "nan"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_labeled['Embarked'][46]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "64592845-cfd0-43bd-b0bb-b72ccf0dc6f4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "删除 'Embarked' 列为空的行后的 DataFrame:\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>707</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>39.0</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>29.1250</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>708</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>male</td>\n",
       "      <td>27.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>709</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>19.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>710</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>711</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>712 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Survived  Pclass     Sex   Age  SibSp  Parch     Fare Embarked\n",
       "0           0       3    male  22.0      1      0   7.2500        S\n",
       "1           1       1  female  38.0      1      0  71.2833        C\n",
       "2           1       3  female  26.0      0      0   7.9250        S\n",
       "3           1       1  female  35.0      1      0  53.1000        S\n",
       "4           0       3    male  35.0      0      0   8.0500        S\n",
       "..        ...     ...     ...   ...    ...    ...      ...      ...\n",
       "707         0       3  female  39.0      0      5  29.1250        Q\n",
       "708         0       2    male  27.0      0      0  13.0000        S\n",
       "709         1       1  female  19.0      0      0  30.0000        S\n",
       "710         1       1    male  26.0      0      0  30.0000        C\n",
       "711         0       3    male  32.0      0      0   7.7500        Q\n",
       "\n",
       "[712 rows x 8 columns]"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 删除Embarked为空的行\n",
    "# 删除 'Embarked' 列为空的行,重新编排索引，并删除旧的索引列\n",
    "df_labeled = df_labeled.dropna(subset=['Embarked']).reset_index(drop=True)\n",
    "\n",
    "# 打印处理后的 DataFrame\n",
    "print(\"\\n删除 'Embarked' 列为空的行后的 DataFrame:\")\n",
    "\n",
    "df_labeled"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "024115b0-2f1a-44d5-a16e-4ff6fd7102c2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# from sklearn.impute import SimpleImputer\n",
    "\n",
    "# # 创建SimpleImputer对象，在本例中使用均值填补缺失值\n",
    "# # imputer = SimpleImputer(strategy='mean')\n",
    "\n",
    "# # 创建SimpleImputer对象，在本例中使用众数填补缺失值\n",
    "# imputer = SimpleImputer(strategy='most_frequent')\n",
    "\n",
    "# # 使用SimpleImputer对象进行拟合和转换\n",
    "# data_imputed = imputer.fit_transform(df_labeled)\n",
    "\n",
    "# # 将填补后的数据转换回DataFrame\n",
    "# df_labeled = pd.DataFrame(data_imputed, columns=df_labeled.columns)\n",
    "\n",
    "# df_labeled"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "b28f5518-c393-40b2-af3d-bdefcd5bdcb9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "存在缺失值的列：\n",
      "Survived    0\n",
      "Pclass      0\n",
      "Sex         0\n",
      "Age         0\n",
      "SibSp       0\n",
      "Parch       0\n",
      "Fare        0\n",
      "Embarked    0\n",
      "dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# 统计每列缺失值的数量\n",
    "missing_values = df_labeled.isnull().sum()\n",
    "\n",
    "# 输出存在缺失值的列\n",
    "print(\"存在缺失值的列：\")\n",
    "# print(missing_values[missing_values > 0])\n",
    "print(missing_values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "cbc65a02-9489-465c-98ec-3c9c426a4479",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>707</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>39.0</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>29.1250</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>708</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>male</td>\n",
       "      <td>27.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>709</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>19.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>710</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>711</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>712 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Survived  Pclass     Sex   Age  SibSp  Parch     Fare Embarked\n",
       "0           0       3    male  22.0      1      0   7.2500        S\n",
       "1           1       1  female  38.0      1      0  71.2833        C\n",
       "2           1       3  female  26.0      0      0   7.9250        S\n",
       "3           1       1  female  35.0      1      0  53.1000        S\n",
       "4           0       3    male  35.0      0      0   8.0500        S\n",
       "..        ...     ...     ...   ...    ...    ...      ...      ...\n",
       "707         0       3  female  39.0      0      5  29.1250        Q\n",
       "708         0       2    male  27.0      0      0  13.0000        S\n",
       "709         1       1  female  19.0      0      0  30.0000        S\n",
       "710         1       1    male  26.0      0      0  30.0000        C\n",
       "711         0       3    male  32.0      0      0   7.7500        Q\n",
       "\n",
       "[712 rows x 8 columns]"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_labeled"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "c158d7f0-01ac-4b36-ae1d-f42093a5d659",
   "metadata": {},
   "outputs": [],
   "source": [
    "# # 可以写成一个方法： \n",
    "# def preprocess_data(data):\n",
    "#     # 删除关联性不大的`PassengerID` `Name` `Ticket` `Cabin`列\n",
    "#     data = data.drop(['PassengerId','Name','Ticket','Cabin'],axis=1)\n",
    "#     # 删除存在空值的行\n",
    "#     data.dropna(axis=0, inplace=True)\n",
    "#     data.reset_index(drop=True)\n",
    "#     return data"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a7611cc-4ad1-472e-bb47-eb416de98ce5",
   "metadata": {},
   "source": [
    "## 特征工程"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a89f503a-0510-4db1-a7cd-aecc21bcbfb2",
   "metadata": {},
   "source": [
    "### 特征分析"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "f3bb8a88-814b-40c9-bb2e-efb02374e9ec",
   "metadata": {},
   "source": [
    "| 特征        | 类型     | 推荐处理方式                           |\n",
    "| ----------- | -------- | -------------------------------------- |\n",
    "| Pclass      | 有序分类 | 树模型保留整数；线性模型用 one-hot     |\n",
    "| Sex         | 二分类   | 直接 0/1                               |\n",
    "| Age         | 连续数值 | 保留原值（标准化）；可加“是否儿童”特征 |\n",
    "| SibSp/Parch | 计数型   | 保留原值；加衍生特征 FamilySize        |\n",
    "| Fare        | 连续数值 | log 变换 + 标准化                      |\n",
    "| Embarked    | 无序分类 | one-hot 编码                           |"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d0b500fe-d978-4a16-bab1-8016514e94aa",
   "metadata": {},
   "source": [
    "### 特征编码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "b3559609-6c4b-4455-99fe-0ff25489ec1d",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "def titanic_feature_engineering(df, onehot_pclass=False, scaler=None, is_train=True):\n",
    "    \"\"\"\n",
    "    Titanic 特征工程\n",
    "    参数:\n",
    "        df: 输入 DataFrame\n",
    "        onehot_pclass: 是否对 Pclass 做 one-hot（默认 False）\n",
    "        scaler: 已拟合的 StandardScaler（训练集返回，测试集复用）\n",
    "        is_train: 是否训练集（决定是否 fit scaler）\n",
    "    返回:\n",
    "        df_new: 特征工程后的 DataFrame\n",
    "        scaler: 训练好的 StandardScaler\n",
    "    \"\"\"\n",
    "    df = df.copy()\n",
    "    \n",
    "    # ========== Sex（二分类 → 0/1） ==========\n",
    "    df[\"Sex\"] = df[\"Sex\"].map({\"male\": 0, \"female\": 1}).astype(int)\n",
    "    \n",
    "    # ========== Embarked（无序分类 → one-hot） ==========\n",
    "    df[\"Embarked\"].fillna(\"U\", inplace=True)  # 缺失值补 \"U\"\n",
    "    df = pd.get_dummies(df, columns=[\"Embarked\"], prefix=\"Embarked\")\n",
    "    \n",
    "    # ========== Pclass（有序分类） ==========\n",
    "    if onehot_pclass:\n",
    "        df = pd.get_dummies(df, columns=[\"Pclass\"], prefix=\"Pclass\")\n",
    "    # 否则保留原始整数 1/2/3\n",
    "    \n",
    "    # ========== Age（连续数值 + 是否儿童） ==========\n",
    "    df[\"Age\"].fillna(df[\"Age\"].median(), inplace=True)\n",
    "    df[\"IsChild\"] = (df[\"Age\"] < 16).astype(int)\n",
    "    \n",
    "    # ========== SibSp / Parch + FamilySize ==========\n",
    "    df[\"FamilySize\"] = df[\"SibSp\"] + df[\"Parch\"] + 1\n",
    "    \n",
    "    # ========== Fare（连续数值 → log + 标准化） ==========\n",
    "    df[\"Fare\"].fillna(df[\"Fare\"].median(), inplace=True)\n",
    "    df[\"Fare\"] = df[\"Fare\"].map(lambda x: np.log(x + 1))\n",
    "    \n",
    "    # ========== 删除无关字段 ==========\n",
    "    drop_cols = [\"PassengerId\", \"Name\", \"Ticket\", \"Cabin\"]\n",
    "    df.drop([c for c in drop_cols if c in df.columns], axis=1, inplace=True)\n",
    "    \n",
    "    # ========== 标准化数值特征 ==========\n",
    "    num_features = [\"Age\", \"Fare\", \"FamilySize\"]\n",
    "    if is_train:\n",
    "        scaler = StandardScaler()\n",
    "        df[num_features] = scaler.fit_transform(df[num_features])\n",
    "    else:\n",
    "        df[num_features] = scaler.transform(df[num_features])\n",
    "    \n",
    "    return df, scaler\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "90fc1d03-1a2d-4c86-ad05-e0f0acf1de78",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 训练集特征工程\n",
    "train_processed, scaler = titanic_feature_engineering(df_labeled, onehot_pclass=False, is_train=True)\n",
    "\n",
    "# 测试集特征工程（用相同 scaler）\n",
    "test_processed, _ = titanic_feature_engineering(df_labeled, onehot_pclass=False, scaler=scaler, is_train=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "80ff4c92",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:35:25.041585Z",
     "start_time": "2022-04-27T07:35:24.980770Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>IsChild</th>\n",
       "      <th>FamilySize</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.527669</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.976410</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>0.035965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.577094</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1.307189</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0</td>\n",
       "      <td>0.035965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.251478</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.893664</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.369951</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1.002314</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>0.035965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.369951</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.879030</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>707</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0.646142</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0.386294</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>0</td>\n",
       "      <td>2.731412</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>708</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.182430</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.419978</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>709</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.734812</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.416419</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>710</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.251478</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.416419</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>711</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.162808</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.914500</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>712 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Survived  Pclass  Sex       Age  SibSp  Parch      Fare  Embarked_C  \\\n",
       "0           0       3    0 -0.527669      1      0 -0.976410       False   \n",
       "1           1       1    1  0.577094      1      0  1.307189        True   \n",
       "2           1       3    1 -0.251478      0      0 -0.893664       False   \n",
       "3           1       1    1  0.369951      1      0  1.002314       False   \n",
       "4           0       3    0  0.369951      0      0 -0.879030       False   \n",
       "..        ...     ...  ...       ...    ...    ...       ...         ...   \n",
       "707         0       3    1  0.646142      0      5  0.386294       False   \n",
       "708         0       2    0 -0.182430      0      0 -0.419978       False   \n",
       "709         1       1    1 -0.734812      0      0  0.416419       False   \n",
       "710         1       1    0 -0.251478      0      0  0.416419        True   \n",
       "711         0       3    0  0.162808      0      0 -0.914500       False   \n",
       "\n",
       "     Embarked_Q  Embarked_S  IsChild  FamilySize  \n",
       "0         False        True        0    0.035965  \n",
       "1         False       False        0    0.035965  \n",
       "2         False        True        0   -0.637897  \n",
       "3         False        True        0    0.035965  \n",
       "4         False        True        0   -0.637897  \n",
       "..          ...         ...      ...         ...  \n",
       "707        True       False        0    2.731412  \n",
       "708       False        True        0   -0.637897  \n",
       "709       False        True        0   -0.637897  \n",
       "710       False       False        0   -0.637897  \n",
       "711        True       False        0   -0.637897  \n",
       "\n",
       "[712 rows x 12 columns]"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_processed"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "e2cf0041-3fbf-438b-abd4-1891936f29d3",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_processed.to_csv('tmp.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "ffeab4d7",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:42:22.475457Z",
     "start_time": "2022-04-27T07:42:22.463171Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>IsChild</th>\n",
       "      <th>FamilySize</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.527669</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.976410</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>0.035965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.577094</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1.307189</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0</td>\n",
       "      <td>0.035965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.251478</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.893664</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.369951</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1.002314</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>0.035965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.369951</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.879030</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>707</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0.646142</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0.386294</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>0</td>\n",
       "      <td>2.731412</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>708</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.182430</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.419978</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>709</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.734812</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.416419</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>710</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.251478</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.416419</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>711</th>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.162808</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.914500</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>712 rows × 11 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Pclass  Sex       Age  SibSp  Parch      Fare  Embarked_C  Embarked_Q  \\\n",
       "0         3    0 -0.527669      1      0 -0.976410       False       False   \n",
       "1         1    1  0.577094      1      0  1.307189        True       False   \n",
       "2         3    1 -0.251478      0      0 -0.893664       False       False   \n",
       "3         1    1  0.369951      1      0  1.002314       False       False   \n",
       "4         3    0  0.369951      0      0 -0.879030       False       False   \n",
       "..      ...  ...       ...    ...    ...       ...         ...         ...   \n",
       "707       3    1  0.646142      0      5  0.386294       False        True   \n",
       "708       2    0 -0.182430      0      0 -0.419978       False       False   \n",
       "709       1    1 -0.734812      0      0  0.416419       False       False   \n",
       "710       1    0 -0.251478      0      0  0.416419        True       False   \n",
       "711       3    0  0.162808      0      0 -0.914500       False        True   \n",
       "\n",
       "     Embarked_S  IsChild  FamilySize  \n",
       "0          True        0    0.035965  \n",
       "1         False        0    0.035965  \n",
       "2          True        0   -0.637897  \n",
       "3          True        0    0.035965  \n",
       "4          True        0   -0.637897  \n",
       "..          ...      ...         ...  \n",
       "707       False        0    2.731412  \n",
       "708        True        0   -0.637897  \n",
       "709        True        0   -0.637897  \n",
       "710       False        0   -0.637897  \n",
       "711       False        0   -0.637897  \n",
       "\n",
       "[712 rows x 11 columns]"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# X： 去除df_labeled的‘Survived’列\n",
    "# Y： 保留df_labeled的‘Survived’列\n",
    "X = train_processed.drop('Survived',axis=1)\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "bf9e5ab0-21bb-4267-8eae-17f7d25e01ac",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      0\n",
       "1      1\n",
       "2      1\n",
       "3      1\n",
       "4      0\n",
       "      ..\n",
       "707    0\n",
       "708    0\n",
       "709    1\n",
       "710    1\n",
       "711    0\n",
       "Name: Survived, Length: 712, dtype: int64"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y = train_processed['Survived']\n",
    "y"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "123aaae6-27a3-452c-8a86-b7acabd4b92a",
   "metadata": {},
   "source": [
    "### 特征选择"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0bafa2e4-1c65-41fb-a6c1-77192849246c",
   "metadata": {},
   "source": [
    "#### 计算DataFrame 中所有列的成对相关性系数观察特征之间的相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "ecc81499",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>IsChild</th>\n",
       "      <th>FamilySize</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Pclass</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.150826</td>\n",
       "      <td>-0.365902</td>\n",
       "      <td>0.065187</td>\n",
       "      <td>0.023666</td>\n",
       "      <td>-0.715698</td>\n",
       "      <td>-0.279194</td>\n",
       "      <td>0.131989</td>\n",
       "      <td>0.197831</td>\n",
       "      <td>0.167817</td>\n",
       "      <td>0.054467</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sex</th>\n",
       "      <td>-0.150826</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.099037</td>\n",
       "      <td>0.106296</td>\n",
       "      <td>0.249543</td>\n",
       "      <td>0.264902</td>\n",
       "      <td>0.103611</td>\n",
       "      <td>0.027256</td>\n",
       "      <td>-0.109078</td>\n",
       "      <td>0.116516</td>\n",
       "      <td>0.210154</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Age</th>\n",
       "      <td>-0.365902</td>\n",
       "      <td>-0.099037</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.307351</td>\n",
       "      <td>-0.187896</td>\n",
       "      <td>0.111644</td>\n",
       "      <td>0.038268</td>\n",
       "      <td>-0.021693</td>\n",
       "      <td>-0.025431</td>\n",
       "      <td>-0.583723</td>\n",
       "      <td>-0.300699</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SibSp</th>\n",
       "      <td>0.065187</td>\n",
       "      <td>0.106296</td>\n",
       "      <td>-0.307351</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.383338</td>\n",
       "      <td>0.302069</td>\n",
       "      <td>-0.046227</td>\n",
       "      <td>0.051331</td>\n",
       "      <td>0.018968</td>\n",
       "      <td>0.476860</td>\n",
       "      <td>0.847212</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Parch</th>\n",
       "      <td>0.023666</td>\n",
       "      <td>0.249543</td>\n",
       "      <td>-0.187896</td>\n",
       "      <td>0.383338</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.325265</td>\n",
       "      <td>-0.009523</td>\n",
       "      <td>-0.009417</td>\n",
       "      <td>0.013259</td>\n",
       "      <td>0.354275</td>\n",
       "      <td>0.815440</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fare</th>\n",
       "      <td>-0.715698</td>\n",
       "      <td>0.264902</td>\n",
       "      <td>0.111644</td>\n",
       "      <td>0.302069</td>\n",
       "      <td>0.325265</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.305915</td>\n",
       "      <td>-0.087883</td>\n",
       "      <td>-0.243305</td>\n",
       "      <td>0.086489</td>\n",
       "      <td>0.376403</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked_C</th>\n",
       "      <td>-0.279194</td>\n",
       "      <td>0.103611</td>\n",
       "      <td>0.038268</td>\n",
       "      <td>-0.046227</td>\n",
       "      <td>-0.009523</td>\n",
       "      <td>0.305915</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.095623</td>\n",
       "      <td>-0.884986</td>\n",
       "      <td>0.032236</td>\n",
       "      <td>-0.034449</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked_Q</th>\n",
       "      <td>0.131989</td>\n",
       "      <td>0.027256</td>\n",
       "      <td>-0.021693</td>\n",
       "      <td>0.051331</td>\n",
       "      <td>-0.009417</td>\n",
       "      <td>-0.087883</td>\n",
       "      <td>-0.095623</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.378859</td>\n",
       "      <td>0.039088</td>\n",
       "      <td>0.026754</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked_S</th>\n",
       "      <td>0.197831</td>\n",
       "      <td>-0.109078</td>\n",
       "      <td>-0.025431</td>\n",
       "      <td>0.018968</td>\n",
       "      <td>0.013259</td>\n",
       "      <td>-0.243305</td>\n",
       "      <td>-0.884986</td>\n",
       "      <td>-0.378859</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.048254</td>\n",
       "      <td>0.019514</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>IsChild</th>\n",
       "      <td>0.167817</td>\n",
       "      <td>0.116516</td>\n",
       "      <td>-0.583723</td>\n",
       "      <td>0.476860</td>\n",
       "      <td>0.354275</td>\n",
       "      <td>0.086489</td>\n",
       "      <td>0.032236</td>\n",
       "      <td>0.039088</td>\n",
       "      <td>-0.048254</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.502634</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FamilySize</th>\n",
       "      <td>0.054467</td>\n",
       "      <td>0.210154</td>\n",
       "      <td>-0.300699</td>\n",
       "      <td>0.847212</td>\n",
       "      <td>0.815440</td>\n",
       "      <td>0.376403</td>\n",
       "      <td>-0.034449</td>\n",
       "      <td>0.026754</td>\n",
       "      <td>0.019514</td>\n",
       "      <td>0.502634</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              Pclass       Sex       Age     SibSp     Parch      Fare  \\\n",
       "Pclass      1.000000 -0.150826 -0.365902  0.065187  0.023666 -0.715698   \n",
       "Sex        -0.150826  1.000000 -0.099037  0.106296  0.249543  0.264902   \n",
       "Age        -0.365902 -0.099037  1.000000 -0.307351 -0.187896  0.111644   \n",
       "SibSp       0.065187  0.106296 -0.307351  1.000000  0.383338  0.302069   \n",
       "Parch       0.023666  0.249543 -0.187896  0.383338  1.000000  0.325265   \n",
       "Fare       -0.715698  0.264902  0.111644  0.302069  0.325265  1.000000   \n",
       "Embarked_C -0.279194  0.103611  0.038268 -0.046227 -0.009523  0.305915   \n",
       "Embarked_Q  0.131989  0.027256 -0.021693  0.051331 -0.009417 -0.087883   \n",
       "Embarked_S  0.197831 -0.109078 -0.025431  0.018968  0.013259 -0.243305   \n",
       "IsChild     0.167817  0.116516 -0.583723  0.476860  0.354275  0.086489   \n",
       "FamilySize  0.054467  0.210154 -0.300699  0.847212  0.815440  0.376403   \n",
       "\n",
       "            Embarked_C  Embarked_Q  Embarked_S   IsChild  FamilySize  \n",
       "Pclass       -0.279194    0.131989    0.197831  0.167817    0.054467  \n",
       "Sex           0.103611    0.027256   -0.109078  0.116516    0.210154  \n",
       "Age           0.038268   -0.021693   -0.025431 -0.583723   -0.300699  \n",
       "SibSp        -0.046227    0.051331    0.018968  0.476860    0.847212  \n",
       "Parch        -0.009523   -0.009417    0.013259  0.354275    0.815440  \n",
       "Fare          0.305915   -0.087883   -0.243305  0.086489    0.376403  \n",
       "Embarked_C    1.000000   -0.095623   -0.884986  0.032236   -0.034449  \n",
       "Embarked_Q   -0.095623    1.000000   -0.378859  0.039088    0.026754  \n",
       "Embarked_S   -0.884986   -0.378859    1.000000 -0.048254    0.019514  \n",
       "IsChild       0.032236    0.039088   -0.048254  1.000000    0.502634  \n",
       "FamilySize   -0.034449    0.026754    0.019514  0.502634    1.000000  "
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.corr() # Pandas dataframe.corr()用于查找数据帧中所有列的成对相关性。任何na值会自动排除。对于 DataFrame 中的任何非数字数据类型列，将忽略该列。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "88f1e6fb",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T08:10:48.331681Z",
     "start_time": "2022-04-27T08:10:44.723215Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABf0AAAQXCAYAAABF8sFJAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Xd4VEXbx/HfJqSShHRCgCRAIKGF0LuIBEGUJs3HAiogIKgUG6gUfXwRVESKFOlFKVJEig0FQXoXkCLSayoppGffP5Zn40oSMRBCNt/PdZ0L9uzMyQzDbs65z5x7DEaj0SgAAAAAAAAAAFDk2RR2AwAAAAAAAAAAwN1B0B8AAAAAAAAAACtB0B8AAAAAAAAAACtB0B8AAAAAAAAAACtB0B8AAAAAAAAAACtB0B8AAAAAAAAAACtB0B8AAAAAAAAAACtB0B8AAAAAAAAAACtB0B8AAAAAAAAAACtB0B8AAAAAAAAAACtB0B8AAAAAAAAAUOz98ssvat++vfz9/WUwGLR69ep/rLNp0ybVqVNHDg4OCg4O1rx5824pM3XqVAUFBcnR0VENGzbUrl277n7j/4KgPwAAAAAAAACg2EtKSlKtWrU0derU2yp/+vRpPfroo2rZsqUOHDigwYMHq0+fPvruu+/MZZYuXaqhQ4dq1KhR2rdvn2rVqqU2bdro2rVrBdUNGYxGo7HAjg4AAAAAAAAAQBFjMBi0atUqderUKdcyb7zxhtatW6fDhw+b9z3xxBOKi4vTt99+K0lq2LCh6tevrylTpkiSsrKyVL58eb300kt68803C6TtzPQHAAAAAAAAAFil1NRUxcfHW2ypqal35djbt29XRESExb42bdpo+/btkqS0tDTt3bvXooyNjY0iIiLMZQpCiQI7MgAAAAAAAADAKhgGNCrsJuTLqNJtNWbMGMt9o0Zp9OjRd3zsK1euqHTp0hb7Spcurfj4eCUnJys2NlaZmZk5ljl27Ngd//zcEPQvgorqBwyScdoO058nxxZyS5BfhsrDJUkZc54s5JYgP0o8/4UkKcu4sZBbgvyyMbQy/SV9Q+E2BPln94gk6WC10EJuCPKj1lHThUnW9wMLuSXIL5uHTflp41KXF3JLkF/uDt0kSecTpxdyS5Bf5V36S5KuJS8o5JYgP3ydepr+Yvy5cBuC/DO0LOwW4B4bPny4hg4darHPwcGhkFpzbxD0BwAAAAAAAABYJQcHhwIL8vv5+enq1asW+65evSo3Nzc5OTnJ1tZWtra2OZbx8/MrkDZJ5PQHAAAAAAAAAOBfa9y4sTZutMwm8MMPP6hx48aSJHt7e9WtW9eiTFZWljZu3GguUxCY6Q8AAAAAAAAAyJPBxlDYTShwiYmJ+uOPP8yvT58+rQMHDsjT01MBAQEaPny4Ll68qAULTCna+vfvrylTpuj111/X888/r59++knLli3TunXrzMcYOnSoevXqpXr16qlBgwaaOHGikpKS9NxzzxVYPwj6AwAAAAAAAACKvT179qhly+x1H/63FkCvXr00b948Xb58WefOnTO/X6FCBa1bt05DhgzRp59+qnLlymnWrFlq06aNuUyPHj0UGRmpkSNH6sqVKwoPD9e33357y+K+dxNBfwAAAAAAAABAsffggw/KaDTm+v68efNyrLN///48jzto0CANGjToTpt32wj6AwAAAAAAAADyVBzS+1gLFvIFAAAAAAAAAMBKEPQHAAAAAAAAAMBKEPQHAAAAAAAAAMBKkNMfAAAAAAAAAJAncvoXHcz0BwAAAAAAAADAShD0BwAAAAAAAADASpDeBwAAAAAAAACQJ9L7FB3M9AcAAAAAAAAAwEoQ9AcAAAAAAAAAwEoQ9AcAAAAAAAAAwEqQ0x8AAAAAAAAAkCeDgZz+RQUz/QEAAAAAAAAAsBIE/QEAAAAAAAAAsBIE/QEAAAAAAAAAsBLk9AcAAAAAAAAA5MlgQ07/ooKZ/gAAAAAAAAAAWAmC/gAAAAAAAAAAWAnS+wAAAAAAAAAA8kR6n6KDmf4AAAAAAAAAAFgJgv4AAAAAAAAAAFgJgv4AAAAAAAAAAFgJcvoDAAAAAAAAAPJETv+ig5n+AAAAAAAAAABYCYL+AAAAAAAAAABYCdL7AAAAAAAAAADyRHqfooOZ/gAAAAAAAAAAWAmC/gAAAAAAAAAAWAmC/gAAAAAAAAAAWAly+v+DBx98UOHh4Zo4cWJhNwUAAAAAAAAACgU5/YuOYhH0f/bZZzV//nxJkp2dnQICAtSzZ0+NGDFCJUoUi3+C+17z4HC91vpp1Q0Ikb+7jzpNf11fH/ylsJsFSUajUZMXH9Dy704oPilNdar6atSLjRVU1i3XOrsPX9HsFYd15FS0ImOSNeWtlopoHGhR5s1Ptmj1xlMW+5rV8desdx8ukH4UZ0ajUVO2XtZXByOVkJqp2mVdNPLhAAV6OuZaZ8n+SC3dH6mL11MlScHeThrQpIyaVyolSbp4PVUPTz+cY90JHSuqTajH3e9IMbF48WbNmf2DoqLiFRpaTm+93V1hYUG5lv/2232a9Ok3ungxWoGBvhr2aie1aFHDosypU5f18UertXv3SWVmZqlSJT99OukF+ft7SpJ6PvOJdu8+aVGnR49mGj3mybvev+Jg8ZdbNHvuT4qMSlBoiL/eGdFFYTUDcy2/4bsD+nTKel28GKOgQB+9OqS9WjxQTZKUnp6piZPX6Zctv+v8hWi5uDiqSaMqGjakvUr7lrrlWGlpGer2nwk6dvySVn/1qqqGliuwfhY3pQe9JK9u3WTr6qak/ft04d0xSjt7NtfyVX/YKPuyZW/ZH/XFYl3873uyLVVKfoNekkuTprIvU0YZsTG6vnGjrkz6VFmJiQXZlWLJaDRq8vo/tXzbRSUkZ6h2BXeN6hGqIF/nXOvM/P60fjgYqT+vJsnRzka1K7hrWMdgVShd0lwmMj5VH64+qe3HYpSUmqEg35Lq3yZID4eXvhfdKjaWL9mhxfO2KjoqUZWr+GnY8MdUvWbO329//nFVM6Zu1PHfL+nypTgNfq2d/vNME4syK5bu1Mplu3TpUpwkqWIlX/Xu11JNmlcp6K7gpq+XHdCyBXsVE52kSpV9NOj1lgqt4Zdj2XUrf9MP647qzKloSVLlqr7qPbBZruVRMFYu2aMv5+9QTHSiKlUprcFvPKxqNW/9PSdJp/+I1Oxpm3X86BVduXxdL73aWt2fbmBRptsjU3Tl8vVb6nbuXldDR7QtkD4UJ4sXb9Ls2d8r8uY1xTtv91BYWIVcy2/4dq8+/XSNLl6MVlCgr159tbNatKhpfv/NN+dp1eodFnWaNaum2bNevuVYaWnp6tZ9nI4du6DVq95S1arl717HANy2YpPep23btrp8+bJOnjypYcOGafTo0frwww8Lu1m4qaSDkw5ePKmBSz4q7Kbgb2atOKyF3xzV6IGNtezjR+XkWEJ9Rn6v1LSMXOskp2QotKKnRvZvlOexm9ctqy0Lu5u3j19vcbebD0mzd17V4r3XNKpNoL58JlROdjZ6YdlJpWZk5VqntKudhrQoq+W9qmpZr6pqGOiqQStP6Y/IZEmSn6u9Ng0Ms9gGNisjZ3sbNauY+w0h5G39+j0a98EKDRz4qFasHK6QkLLq22eyoqMTciy/f98pvTpsjrp0baKVq4arVUQtvTRohk6cuGQuc+5cpJ56coIqVCyt+QuGaPXXb2nAi+3k4GBncaxu3Zrqly1jzdurr3Uu0L5aq/Ub9mns+NUaOKCtVi1/VaEhZdW73/Rcx3Df/tMa9voCde3cSKuXv6pWD9XUwJdn68TJy5KklJQ0HT16QQP6PayVy4ZpysTndfrMNQ0YNCvH443/eI18c7gZgDvj07uPfJ5+RhfGjNbJJ7orKzlZFWfOksHePtc6J7p31ZEHmpm3U72fkyTFffedJMnOx1clfHx1+cPxOt6xvc6PGC63Zs1V/r3370mfiptZP57Vos3nNbpHqJYOqy9nBxv1/Wy/UtMzc62z+484Pdm8nJYMq6/ZA+soPTNLvafu143U7DpvLjyiM1dvaOoLtfT18EZqXctHQ+b8pqPn4+9Ft4qFH779TZ9+uEG9+7fU/KUvKjjET6/0n6eY6JxvjqWkpKtsOU+9+MrD8vJ2ybGMb+lSenHww5q/ZIDmfzlA9RpU1GuvLNaff1wtyK7gpp+/P67pE37RMy800vTFT6liFW+9OWilYmNu5Fj+4N4LatkmVB/N6KpJc5+Qb2lXvTFwpaKucYP0Xtn43VFN+fhHPduvuWZ92VvBVXw17MUlio1JyrF8Skq6ypT1UL9XWsrTu2SOZWYufk6rf3zFvH0y3TTZpGXrqgXWj+Ji/fo9GvvBVxo48DGtWjlCoSHl1LvPZEVH5/y7ad++Uxo2bLa6dm2q1aveUquIcA0cNF0nTly0KNe8eXVt3TLOvE34uHeOxxv/4UrOR4H7QLEJ+js4OMjPz0+BgYEaMGCAIiIitGbNGknSr7/+qgcffFDOzs7y8PBQmzZtFBsbm+NxFi5cqHr16snV1VV+fn568sknde3aNfP7sbGxeuqpp+Tj4yMnJydVrlxZc+fOlSSlpaVp0KBBKlOmjBwdHRUYGKixY8cWfOeLgG+PbNc7a2Zo9cHNhd0U/IXRaNSCr4+qf49aatUoQCEVPDVuaHNdi7mhH7efy7XeA/XKafAzddS6Se4zWyXJ3s5GPh7O5q2Ui8Pd7kKxZzQatXDPVfVr7KeHKrsrxNdZYx+roGuJ6dp4Ii7Xei2D3fVApVIK9HRUkKejXnmgrJztbXTwkunE3tbGIB8XO4tt44k4tQ3xUEl723vUO+szf95P6tatqR7v0ljBwWU0esx/5Ohor5UrtuVYfsHCn9WsWTX17t1alSqV0SuvtFfVauX1xeJN5jITJ67RAy2q67XXHle1auUVEOCjhx4Kk5eXq8WxHJ3s5eNTyry5uDgVZFet1twFm9S9a2N16dxQwZX8NGZkNzk62mvFqp05ll+waLOaNw1Vn+cfUqVKfhr8UjtVq1ZOi77YIklydXXS3Fkvql3b2qpYobTCawXpnRFddeToeV26bHmusnnLUf267ZjeeLVjgfezuPHp2VNXZ0xX/E8/KeXECZ178w3Z+fqqVKuIXOtkxsYqIyrKvLm1eFCp584qafcuSVLKHyd1dvDLit/0s9LOn1fizp26/OkncmvZUrLle/RuMhqNWrDpnPq3qaBWYb4KKeuqD56poWvXU/Xjochc633+Ym11buSvymVcFFrOVWOfrq7LsSk68peA/oE/r+upFuUVFlRK5b2dNaBtRbk62enI+Zxv9OHf+3LBr+rYpZ7ad6qripV89eY7HeToZKdvVu/NsXy1GuX08rC2eviRMNnb5/xUd/MHQ9W0eYgCAr0VEOStAS+3lrOzvQ4fOl+QXcFNKxbtU7vONdS2Q3UFVvTS4BERcnAsoW+/zvkp0hHvP6KO3WspOMRXARU8NfSd1jIajdq3K/frEdxdSxfuVPvHw/Vop1qqUMlHr77dTo6OJbRu9cEcy1et4a+BQ1spom112dvl/Dn08CwpL28X87btl5MqW95D4fUCCrIrxcLceT+qe7em6tKliYKD/TVmzJNydLTTilyvKX5S82bV1af3w6pUqYwGv9JB1aoFaNFfrikkyd6+hMX1QqlSt97Q2fzLYf366+964/UuBdE1AP9CsQn6/52Tk5PS0tJ04MABtWrVStWqVdP27du1detWtW/fXpmZOc/6SU9P13vvvaeDBw9q9erVOnPmjJ599lnz+++8846OHj2qDRs26Pfff9e0adPk7e0tSZo0aZLWrFmjZcuW6fjx41q8eLGCgoLuQW+B/LlwNVGRsclqEl7GvM+1pL3CQnx04FjuF8m3a9dvV9TkqSVq22+lRk/drtj4lDs+JixduJ6mqKQMNQrKnn3v6mCrMP+S5gD+P8nMMmr90Rglp2epVtmcZ+ocuZKkY9eS9XiY911pd3GUlpahI0fOqXGTEPM+GxsbNW4cqgMHTudY5+CB02rcJNRiX7Om1czls7KytHnTYQUF+apP78lq2uR19eg+Xj/+eOCWY639ZrcaN3pN7du/pwkfr1Zyctrd61wxkZaeoSNHL6hJo+z0EDY2NmrSqIr2HzyTY50DB8+ocWPLdBLNmoTqQC7lJSkxMVkGg0Furtk3ZqKiEvTO6KUaP/ZpOTra5VoX/559uXKy8/FVwvbsC+WsxETdOHRIzuHht3UMg52dPNp3UMzKlXmWs3VxNaX2yeU8FPlzITpZUfFpahziad7n6lRCYUFuOnj61tQSuUlIMT3lWMo5+zMWXrGUNuy7qrikdGVlGbVu7xWlZWSqQWXS3N0N6ekZOvb7JTVoVMm8z8bGRvUbVtJvB+9OgD4zM0vfbzik5OQ01ahFsLGgpadn6sSxq6rTIPvf2sbGoDoNAnT0t8u3dYzUlAxlZGTKzS33VJW4e9LTM3Xi98uq2zA7NYyNjUH1GlbQkUMX7trP+H79YbXrWEsGA/nC78T/rimaNMl+YsLGxkZNGlfV/gN/5ljnwIE/c7mmsCy/a9cJNW7ymtq0HaVRo79QbKzl0zZRUfF6551FGj/uOTk65v40JIo2g42hSG7FUbFLaG80GrVx40Z99913eumllzR+/HjVq1dPn332mblM9erVc63//PPPm/9esWJFTZo0SfXr11diYqJcXFx07tw51a5dW/Xq1ZMki6D+uXPnVLlyZTVr1kwGg0GBgXnPgk5NTVVqaqrFPgcHZkLj3omMNaVy8XK3nPHr7e6kqLjkOzp28zpl9XCTQJUt7arzl+P1yYJ9emHUj1ryUTvZ2hbb+5F3XVRiuiTJu6RlENDL2U5RSel51j0RmawnFx5TWkaWnO1tNalzJQV75zz7e8WhaFX0clTtcjk/Ro9/FhebqMzMLHl5WaZH8vJ21enTOacbiIqKl/ffZux7ebsqKso0CzU6OkE3bqRq1uff6+VX2mvYq520dctRvfzS55o3/xU1aGAKNj/2WH35+3vK17eUjp+4qI8/Wq3TZ65q8uR+BdBT6xUbm3RzDP82Jl6u+jPXMUzIcwz/LjU1XR998o0ebVdHLi6mYIfRaNSbby/WE92bqmaNAF24GH0XeoP/KeHtI0nKiLL8d82IjpKd9+3d6HRr1Uq2rq6KWbUq1zK27u4qPWCAopcvy39jkaOoeNNNTC9XywCEt6u9IuNv7wZnVpZRY1ecUJ2KpVTFP/t33SfP1dTQub+p8ZubVcLGIEd7G03uU0uBPrmvFYDbFxd7Q5mZWfL0sjy/8PRy0dnTUXd07D9OXFGfZ2YqLS1DTs72GjfxSVWs5HtHx8Q/ux6XrKxMozy8LD8jHl7OOn8m56ft/+7zSVvk5e2iOg25SXMvXI+9ocxMozy9LCf/eHiV1Nkzd+ecY8tPx5WYkKJ2HcLuyvGKs9g8rin+PH0lxzqma4pby//1fLR58+pq/XBtlSvrrfPnIzXhk9Xq+8JkLV3yhmxtbUzno8Pn64knHlDNmoG6cOHOvqMB3LliE/Rfu3atXFxclJ6erqysLD355JMaPXq06tevr27dut32cfbu3avRo0fr4MGDio2NVVaWKSf2uXPnVK1aNQ0YMEBdunTRvn379PDDD6tTp05q0sS0cNSzzz6r1q1bKyQkRG3bttVjjz2mhx/OfdHSsWPHasyYMRb7Ro0alY/eA7fnm59PadTU7ebX00flnrbgTj3aoqL57yFBHgqp4KnWfVZo129X1Djcv8B+rrVbeyRao7/LftR5WtfgfB8ryNNBK56rqsTUTH1/PE4j1p3RvCer3BL4T0nP0vqjMerfpEwuR0JhMWYZJUkPPRSmZ59tJUmqWrW89u//U0uXbDUH/bv3aGauUyWkrHx8Sum5Zz/VuXORCgjwufcNR47S0zP1yrB5MhqlMe9kn7ssXPyLkpJS1a9PwX1nFyfujz2mcqOzz79O9+9/x8f0eryr4rdsUUbktRzftylZUhWmz1DKqVO6MnXKHf+84u6b3Zc1eskx8+tp/cPv+JjvLj+mk5cTtXhwPYv9k9adUkJyhuYMqiOPknbaeChSQ+b+pkWD61ncHMD9J7CCtxYuH6jExBT99MMRvfv2Ck2b04fA/33uy7m7tOn74/p4ZjfZOxSbcIbVW7v6oBo2rSRvX9d/LoxC8eij9c1/Dwkpq5CQsopo/Y5p9n/jUC1c+LOSklLU7wUWYQbuF8Xmt2TLli01bdo02dvby9/fXyVKmLru5HT7OYuTkpLUpk0btWnTRosXL5aPj4/OnTunNm3aKC3NNEvokUce0dmzZ7V+/Xr98MMPatWqlQYOHKiPPvpIderU0enTp7Vhwwb9+OOP6t69uyIiIvTVV1/l+POGDx+uoUOHWuxzcHDQmMHf5vNfAchby4YBCgvJDvCl3VzcLjouWb6e2bNxouKSVbWC5y3170R5P1d5uDno7OUENQ6/q4cuVloGu6umf/YsnPQMU9A3KildPi7Zs/2jb6Qr1DfvWYj2tjYK9DDNJK7uV1KHLydp0Z5rGt3W8iml74/HKjk9Sx1q3N3/E8WNu4eLbG1tbllgKzoqQd7eOS+O7O3tpqi/LRD71/LuHi4qUcJGlYItb8hUrOSnfXtP5dqWsLAgSdK5swT9/w0Pj5I3x/BvYxKd1xi65jmG/5OenqnBw+bp0qVYzZ8z0DzLX5J27DqpAwfPqGadVy3qdOkxQe0fratx//fUnXSr2In/6WedOHTI/Pp/i/WW8PZSRlR2arsSXt5KPvb7Px7Pzt9fLo0b68wrL+X4vo1zSVWcOUtZSUk689IgKSPjDnuAh2r6KCwoewHBtJsL10cnpMm3VPZTs1EJaapa9p8DTO8tO6bNh6O08JV68vPI/uydi7yhxb9c0JoRjVS5jCnAH1rOVXtOxemLX85r9BMsRnmn3D2cZWtrc8uivTHRifLMZZHe22VnV0LlA7wkSVWrldXvhy9o6eJtGj6y0x0dF3kr5e4kG1uDYqMtF+2Njb4hD++8z02XLdijJfP2aPy0x1WxMucn90opD2fZ2hoUE22ZGjQ2OkleuSzS+29cuXRde3ee1n8/Jgf83eCR72uK2y8vSeXL+8jDw0Vnz15T48ah2rHzuA4c+FM1wwZZlOvSdazaP9ZA48Y9m78O4b5TXFPlFEXFJodGyZIlFRwcrICAAHPAX5LCwsK0cePG2zrGsWPHFB0drQ8++EDNmzdXaGioxSK+/+Pj46NevXpp0aJFmjhxombOnGl+z83NTT169NDnn3+upUuXasWKFYqJicnx5zk4OMjNzc1iI70PCpKLs50C/d3MW3CAu3w8nLT9QHZ+zcQbaTp0PFLhoXf3RPtKVJLiElLl68nioXeipIOtAj0czVslb0d5lyyhnWezg4qJqZk6dClJtfz/3Ul6llFKyzTesn/loSi1DC4lT2fyiN8Je/sSql49QDu2Hzfvy8rK0o4dxxUeXiHHOrXCK2jH9mMW+7Zt+91c3t6+hGrUCLwlPdCZM9fk75/7TZpjx0z5WX18cz/Rx63s7UqoerVy2r7zpHlfVlaWtu88odq1gnKsE14rSDt2nLTYt237cYX/pfz/Av5nz0Vq3qwX5eFu+dl9e3gXfb3ida3+6jWt/uo1zfzsBUnSJx/10pCXH707nStGsm4kKe3cOfOW+scfSo+8JtdGjc1lbEqWlHNYmG4cOPCPx/Ps/LgyYqIVv3nzLe/ZlCypirNmy5iertMDX5QxjbU07oaSjiUU6ONs3oL9SsrbzV47jmefcycmZ+jQmXjVqlAq1+MYjUa9t+yYfjwUqbkv1VW5HJ50kySbv+WftrUx/c7EnbOzK6HQqv7avTM7r3RWVpZ27/xTNWuVv6s/KyvLqPQ01tMoaHZ2tqoSWlr7dmevyZCVZdT+3edVrWbuT40unb9bi2bt1NgpnRVSze9eNBU32dnZqkrVMtq764x5X1aWUXt3nVH1sHJ3fPz1Xx+Uu6ezGjevfMfHQvY1xfa/XCNkZWVp+45jqh1eMcc64eEVc7mmyLm8JF25Equ4uCT5+Jp+j779Vg99vfptrV71llavekszZ5iC/59M6KMhQzreabcA5EOxmemfm+HDh6tmzZp68cUX1b9/f9nb2+vnn39Wt27dzAvw/k9AQIDs7e01efJk9e/fX4cPH9Z7771nUWbkyJGqW7euqlevrtTUVK1du1ZVq5pm+UyYMEFlypRR7dq1ZWNjo+XLl8vPz0/u7u73qrv3rZIOTgr2yT5hqODlr1rlKismKV7nY3POg4yCZzAY1LNjNU1fekhBZd1UtrSrJi3aJ19PZ0U0zs6h+eyI7xTROEBPtzf9X09KTte5y9kzBS5cTdTvf0arlIuD/H1dlJScrqlfHtDDTQLl7eGk85cT9OHcvQoo46Zmdcre835aM4PBoGfqldaMbZcV4OGgcu4Omrzlonxd7NSqiru53PNLTqhVZXc9Vdf0SPsnmy+qeUU3lXGzV1JaltYdjdHucwma2d3yZPxsbIr2nE/UtG75TyOEbL2efUjD31ygGjUCVTMsUAvm/6zk5FR1ftwUbHzjjXkq7euuocM6SZJ6PtNSPXt+orlzflSLB2to/bo9OnLknMa8mz2z+/nerTVs6GzVqxeshg2raOuWo9r082+av2CwJOncuUitXbtbLR6oIXf3kjp+4qI+GPuV6tULVkjInV/IFTfP9XxQb7z1hWpUL6+wGgGav2izkpPT9HinhpKk14cvUmnfUho2pL0kqefTLfTMc5M1Z97PavFANa3fsE+Hj5zXu6N7SDIF/F8eOldHj17QjKl9lZmVpcib+VVLlXKWvV0J+ZexXDDU2dk0Mz2gvJf8/NzvUc+tW+SCBfLt11+pZ88o7cJF+b38stKvXdP1jT+ay1ScM1fXf/xR0V8szq5oMMizc2fFrl59y+K8/wv42zg66cwbr8nWxUVyMc1czoiJkW6mkMSdMxgM6vlggKZ/d1qBvs4q5+WkSWtPybeUgyLCsicxPDd5ryLCfPVUC1Mw+d1lx7Vu7xVN6VtLJR1tFRlvWmvL1bGEHO1tVaG0swJ8nDRqye96vVNlud9M77PteIym9QsvjK5apf/0bKp3316hqtX8Va1mOS1ZtE0pyWl6rFNdSdLoEV/Jp7SbBr5iSpuanp6h06cib/49U5HX4nXi2GU5OdubZ/ZP/fR7NWlaWaXLuOtGUqq+23BI+/ac0afTexVOJ4uZLk/X0fhR3ymkqq9Cavhp5Rf7lZKcrrYdTGvrfTDyW3n7uKjPS6b0g0vm7db86ds1/P1H5FfGTTFRphnnTs52cnJmsdB7occzDfV/76xRaLUyqlrDX8sX71JycrradTTl4P/v22vk7euq/i+3lGT67J353+cwI1OR1xJ08tgVOTnbq1xA9sSTrCyj1q85qEfah6lEiWIzJ7XAPfdshN54c55q1AhUWFiQ5s//yXQ++rgp9fTrb8xVaV93DRvWWZLU85mH9EzPjzVnzg9q8WBNrV+3W4ePnNW7N68pkpJSNGXqOrV5uLa8vd10/nyUPvxwpQIDfNS8WTVJumVCkbOzacJqQICP/PxY3B4oDMU+6F+lShV9//33GjFihBo0aCAnJyc1bNhQ//nPf24p6+Pjo3nz5mnEiBGaNGmS6tSpo48++kgdOnQwl7G3t9fw4cN15swZOTk5qXnz5lqyZIkkydXVVePHj9fJkydla2ur+vXra/369bKx4ZdbvYCq2jQ0ezHlT7oNliTN275Ozy14L5dauBf6dKmh5JQMjZy8TfFJaapbrbQ+f7e1HOyzvz7OXYlXbHyK+fXhk1HqNeI78+sPZu2WJHVqVUkfDGkuWxuDjp+O1eqNp5SQlCYfTyc1rV1WrzxdW/Z2tveuc8VE74allZyepdHfnVVCSqbqlHPRjO6V5fCXE+vzsamKS85OKRGTlK7ha88oMildrg62quLjpJndK6tJBcuZ36sORau0q52aVmBG+N3Qrl09xcYkatLktYqKjFfVquU08/NB5kdrL1+KlY0he9xq16mkDz96Xp9OXKNPPlmjwCAfTZ7ST1WqZK+L0bp1uEaN/o9mzvxO//f+clWoUFqfTuqrunVNN2rs7Gy1fdsx8w0GvzIeav1wuAYMeOTedt5KtHukjmJikzRpygZFRsWramhZzZreT97ephQily/HyuYvj8TWqV1BH43rqYmT12nCp2sVFOijqZN6q0pl02zHq9fi9NPPhyVJHbt+aPGzFswZqIYNmBV3L0TOniUbJyeVG/OubF3dlLRvr/58oa/FzHyH8gEq4WF5UevSuIns/csqeuXKW47pVK26StYKlyRV/e4Hi/eORrRS+qWLd78jxVifiEAlp2Vq1Je/Kz45Q3Uqumvmi+Fy+Mt5x7moZMUmZY/pkq2mp556Tdprcaz/e6qaOjfyl52tjWb0r60Ja07qxZkHdSM1QwHezhr7dHW1qH57izzjn7VuW1NxsUma+dlGRUclqkpIGU2c1kteNxf3vXolzuJ7NfJagp7pPtX8evH8rVo8f6vq1AvStDl9JEmxMYka8/YKRUUmyMXFUcFVSuvT6b3UsDGTGO6Flg+H6HpssuZN367Y6BuqVMVHYyd3lsfNhWKvXUmweILmm68OKT09U+++vtbiOM+80Ei9+jUWCl6rNtUUF5uk2dM2KyYqScEhpfXRZ0+YF9m+evm6DH8Zs6hrCXr+idnm10sW7NCSBTsUXjdAk2c/Y96/Z8dpXb0cr3adat27zhQD7drVU0xMgiZN/kaRN68pZn3+0l+uKWIsPmN16lTSRx/11sSJazThk68VFOSrqVP6q0oV04Q8W1sbnTh+UatX71BCwg35+pRS06bV9MorHWRvz9PewP3KYDQaefi0iDEMaFTYTUA+GaftMP15cmwhtwT5Zag8XJKUMefJQm4J8qPE819IkrKMt5fWDfcfG4NpQWKlbyjchiD/7Ew3lA5WCy3khiA/ah01Pf6f9f3AQm4J8svmYVNAPC51eSG3BPnl7mBazP184vRCbgnyq7yLaZH4a8kLCrklyA9fp56mvxh/LtyGIP8MLQu7BUWW25jWhd2EfIkf9cM/F7IyTDEHAAAAAAAAAMBKEPQHAAAAAAAAAMBKFPuc/gAAAAAAAACAvBn+so4O7m/M9AcAAAAAAAAAwEoQ9AcAAAAAAAAAwEoQ9AcAAAAAAAAAwEqQ0x8AAAAAAAAAkCdy+hcdzPQHAAAAAAAAAMBKEPQHAAAAAAAAAMBKEPQHAAAAAAAAAMBKkNMfAAAAAAAAAJAncvoXHcz0BwAAAAAAAADAShD0BwAAAAAAAADASpDeBwAAAAAAAACQJ9L7FB3M9AcAAAAAAAAAwEoQ9AcAAAAAAAAAwEoQ9AcAAAAAAAAAwEqQ0x8AAAAAAAAAkCdy+hcdzPQHAAAAAAAAAMBKEPQHAAAAAAAAAMBKkN4HAAAAAAAAAJAn0vsUHcz0BwAAAAAAAADAShD0BwAAAAAAAADAShD0BwAAAAAAAADASpDTHwAAAAAAAACQJ3L6Fx3M9AcAAAAAAAAAwEoQ9AcAAAAAAAAAwEoQ9AcAAAAAAAAAwEqQ0x8AAAAAAAAAkCdy+hcdzPQHAAAAAAAAAMBKEPQHAAAAAAAAAMBKkN4HAAAAAAAAAJAng4H0PkUFM/0BAAAAAAAAALASBP0BAAAAAAAAALASBP0BAAAAAAAAALASBqPRaCzsRgAAAAAAAAAA7l9+UzoWdhPy5cqgrwu7CfccM/0BAAAAAAAAALASJQq7Afj3jCfHFnYTkE+GysNNfw5oVMgtQX4Zp+0w/XlpSiG3BPlh8B8kSbqR8U0htwT55VyivSTpWOyHhdwS5Feox2uSpMPRHxRyS5AfNbzelMT3aFH2v+9RpW8o3IYg/+wekSQZL04q5IYgvwxlX5YkJaSvKuSWID9c7TpLks4mfFbILUF+Bbq+WNhNAAocM/0BAAAAAAAAALASzPQHAAAAAAAAAOTJYGMo7CbgNjHTHwAAAAAAAAAAK0HQHwAAAAAAAAAAK0F6HwAAAAAAAABAnkjvU3Qw0x8AAAAAAAAAACtB0B8AAAAAAAAAACtB0B8AAAAAAAAAACtBTn8AAAAAAAAAQJ5smD5eZDBUAAAAAAAAAABYCYL+AAAAAAAAAABYCdL7AAAAAAAAAADyZGswFHYTcJuY6Q8AAAAAAAAAgJUg6A8AAAAAAAAAgJUg6A8AAAAAAAAAgJUgpz8AAAAAAAAAIE+2NuT0LyqY6Q8AAAAAAAAAgJUg6A8AAAAAAAAAgJUg6A8AAAAAAAAAgJUgpz8AAAAAAAAAIE+2BnL6FxXM9AcAAAAAAAAAwEoQ9AcAAAAAAAAAwEqQ3gcAAAAAAAAAkCdbpo8XGQwVAAAAAAAAAABWgqA/AAAAAAAAAABWgqA/AAAAAAAAAABWgpz+AAAAAAAAAIA82RoMhd0E3CZm+gMAAAAAAAAAYCUI+gMAAAAAAAAAYCVI7wMAAAAAAAAAyBPpfYoOZvoDAAAAAAAAAGAlCPoDAAAAAAAAAGAlCPoDAAAAAAAAAGAlCPoDAAAAAAAAAPJka2Moktu/NXXqVAUFBcnR0VENGzbUrl27ci374IMPymAw3LI9+uij5jLPPvvsLe+3bds2X2Nwu1jIFwAAAAAAAABQ7C1dulRDhw7V9OnT1bBhQ02cOFFt2rTR8ePH5evre0v5lStXKi0tzfw6OjpatWrVUrdu3SzKtW3bVnPnzjW/dnBwKLhOiKD/vxIZGamRI0dq3bp1unr1qjw8PFSrVi2NHDlSTZs2Lezm3ZeMRqMmLz6g5d+dUHxSmupU9dWoFxsrqKxbrnV2H76i2SsO68ipaEXGJGvKWy0V0TjQosybn2zR6o2nLPY1q+OvWe8+XCD9QN6aB4frtdZPq25AiPzdfdRp+uv6+uAvhd2sYsloNGry3J1avu6I4hNTVadGGY0a0lJB5dzzrLd41SHNXrpPUTE3FFrJW2+//IDCqvqZ3z938brGT9+qvb9dUlp6pprXD9TbL7eQt6ezucyRE9f08cxt+u3YVdnY2ujh5pX05sBmKulkX1DdLRaWfvGr5s/dpOioBFUJKaM3RnRWjbCAHMue+uOKPpv8nX4/ekGXL8Xq1Tc66KmeD1iU2bvnlBbM2aSjRy8qKjJeEyY9q5atatyLrhRb6746qtWLDik2JllBwZ56YVhjVal+68miJH2/+ph+3nBSZ/+MlSRVCvHWMwPqWZT/9N3N+mn9SYt6tRuV0+iJBTtTpDjbsOJ3fb34sOJikhUU7KHeQxupcjWfHMv+8PVxbf72lM7dHMOKIV56qn/dW8pfOBOnhZ/t0dH9V5SZaVS5IHe99n8t5ePnUuD9wd3/bsXdtfjLLZo99ydFRiUoNMRf74zoorCagbmW3/DdAX06Zb0uXoxRUKCPXh3SXi0eqCZJSk/P1MTJ6/TLlt91/kK0XFwc1aRRFQ0b0l6lfUtJknbuOqmez0/N8djLvxyqsJo5/9/A7TMajZo8b5eWrzuafY46uEWe56i7D17S7KX7deTkNUVG39CUdx9RRLOKFmW+/+WUlnxzREdOXtP1+FStmtldVYNz/n7GnVn25XYtnLtZ0VGJqhxSRq+N6KAaNcvnWPbUH1c1fcr3Onb0oi5fitPQNx7Tk880sygz9/Of9fOPR3Tm9DU5ONopLDxQLw15REEVGL+CsGbZQS1fuFcx0TdUsbK3Br72oEJr+OVYdv2qw/px3e86cypaklS5qq+ee7GJRfmtP/2htSt+08lj15RwPUXTFj+pSiGMHe5fqampSk1Ntdjn4OCQY+B9woQJ6tu3r5577jlJ0vTp07Vu3TrNmTNHb7755i3lPT09LV4vWbJEzs7OtwT9HRwc5OeX8+euIJDe51/o0qWL9u/fr/nz5+vEiRNas2aNHnzwQUVHRxd20+5bs1Yc1sJvjmr0wMZa9vGjcnIsoT4jv1dqWkaudZJTMhRa0VMj+zfK89jN65bVloXdzdvHr7e4283HbSrp4KSDF09q4JKPCrspxd6sJfu0cOVBjR7SUss+6y4nRzv1ef3rPD9z6386oQ+mbdHAXg20cuYTCqnkrT6vr1F07A1J0o3kdPV+fbUMBmnehM76YnJXpWdkasBb3ygryyhJuhqVqOdfXa2AsqW09LPumjWug/44E6PhH/x4T/ptrb7bcEAfj1+jfi+21hfLB6tKiL9e7Pe5YqITciyfkpymcuU99fKQdvL2ds2xTHJymqqE+Gv4250Lsum4acsPpzTn0x3q0aeOJszvpAqVPTV68LeKi0nOsfxv+y6reetK+u/URzX+8w7yLl1So1/5VtHXkizK1WlUTvPWPWneXn235b3oTrH0649/at6kXer+fLg+nNtBgcGeem/I97qeyxge2X9FzSIqaMzktvq/GY/K27ek3h38vaIjs8fwyoV4vdV/vcoGltKYKY9owoKO6vZcLdnb296rbhVrBfHdirtn/YZ9Gjt+tQYOaKtVy19VaEhZ9e43XdG5jM++/ac17PUF6tq5kVYvf1WtHqqpgS/P1omTlyVJKSlpOnr0ggb0e1grlw3TlInP6/SZaxowaJb5GLVrV9DWTe9abN26NFK5cl6qWSPnoCb+nVlL9mvhykMaPaSFlk3taroufOObf7guTFdoJS+NfDn367zklAzVrVlGr/ZtUhDNxk3fbzioT8avVd8BEVq0/CVVCSmjl/rNVkx0Yo7lU5LTVK6clwYNfkReuXxv7ttzWt3+00hzvxioqTN7KyM9U4NemK3kG2k5lkf+bfr+hGZ8skVP922ozxb9RxWr+GjES6sVG3Mjx/IH917Qg22q6MPpXTRxbnf5lHbR8EGrFHUte7xTktNVI9xffV5iAiyKhrFjx6pUqVIW29ixY28pl5aWpr179yoiIsK8z8bGRhEREdq+fftt/azZs2friSeeUMmSJS32b9q0Sb6+vgoJCdGAAQMKPJ5M0P82xcXFacuWLRo3bpxatmypwMBANWjQQMOHD1eHDh3MZfr06SMfHx+5ubnpoYce0sGDByWZnhLw8/PT//3f/5mPuW3bNtnb22vjxo2F0qeCZjQateDro+rfo5ZaNQpQSAVPjRvaXNdibujH7edyrfdAvXIa/EwdtW6S+2weSbK3s5GPh7N5K+VSsI/FIHffHtmud9bM0OqDmwu7KcWa0WjUgq8OqP8z9dWqWUWFVPLWuOGtdS0qST9u/TPXevOWH1C3R6uryyPVFBzkqTFDW8rRsYRWbDgqSdp3+LIuXknQ2DdaK6Sit0IqeuuDN1vr8PFr2rH/vCRp0/YzKlHCRiNfeVAVAzxUM7S0Rg99UN//ckpnL8bdi+5bpUXzN+vxrg3VsXMDVQr201ujusjR0U6rV+7OsXz1mgEa8mp7tW1XW3b2OT/M16x5VQ185RE9FFGzIJuOm77+8rAe7hiqiMeqKKCChwa80UwOjiX049oTOZYf9m5LtetaTRWreKlckLsGjWiurCyjDu65ZFHOzt5WHl7O5s3Fjd+BBeWbJUcU0aGKHnqssspXcFe/15vIwaGENq49mWP5waNbqG2XqqpwcwwHDG8qY5ZRv+25bC7zxYx9qtO4nHoOrK+KIV7yK+em+s0DVMrT6V51q1griO9W3D1zF2xS966N1aVzQwVX8tOYkd3k6GivFat25lh+waLNat40VH2ef0iVKvlp8EvtVK1aOS36YoskydXVSXNnvah2bWurYoXSCq8VpHdGdNWRo+d16bLpiRx7uxLy8XYzb+6lSmrjz4f1eKcGMhj+fR5gWDIajVqw4qD6P11PrZrePEd9M+LmOerpXOs90DBQg3s3UuvmFXMt0/HhEA3sWV+N65YriKbjpsULtqpT1wbq0LmeKlYqreEjO8nR0V5rVu3JsXz1muX1yqvt1KZd7je0J894Xu071VOl4NKqEuqv0e9305XLcfr96IWC7EqxtGLxPj3SqbradKiuwIpeemX4Q3JwLKHv1hzJsfzw/7ZVh261VCnERwFBnhrydoSMRmn/rvPmMhGPVtXTfRuqdgOehCpubA1Fcxs+fLiuX79usQ0fPvyW/kVFRSkzM1OlS5e22F+6dGlduXLlH/99du3apcOHD6tPnz4W+9u2basFCxZo48aNGjdunDZv3qxHHnlEmZmZdzYgeSDof5tcXFzk4uKi1atX3/I4yP9069ZN165d04YNG7R3717VqVNHrVq1UkxMjHx8fDRnzhyNHj1ae/bsUUJCgp555hkNGjRIrVq1use9uTcuXE1UZGyymoSXMe9zLWmvsBAfHTgWecfH3/XbFTV5aona9lup0VO3KzY+5Y6PCRRlFy7HKzLmhprUzZ6R5urioLCqpXXgSM6/nNLSM3XkxDWLOjY2BjWuU95cJy09UwZJ9nbZJ+wO9iVkYzBo72+XzWXsStjK5i8L5Dg6mAIj/yuDfyc9LUO/H72oho2rmPfZ2NioYaPKOnTwbCG2DLcrPT1Tp45HqVZ9f/M+GxuDatUvq+O/Xb2tY6SmZCgzM0uufwvqH953WT0fWaQB3Zdr2ritir/O78CCYBrDaIXVsxzDsPpldOLwtds6RlpKpjIzssw3ZrKyjNq7/bz8A9z07uDv9Fy7L/Vmn2+0czOf63uB79b7W1p6ho4cvaAmjSzHp0mjKtp/8EyOdQ4cPKPGfxlPSWrWJFQHcikvSYmJyTIYDHJzzflG20+bDisuLkldOjX8133ArbLPUbMD8+Zz1KP/HEBB4UpPz9CxoxfVsFGweZ+NjY0aNAq+q9+biYmmcxm3Us7/UBL/Rnp6pk4eu6baDbOD8zY2BtVuEKDfD93e5y81JUMZGZlyLcUkExRdDg4OcnNzs9gKIqf+7NmzVbNmTTVo0MBi/xNPPKEOHTqoZs2a6tSpk9auXavdu3dr06ZNd70N/0PQ/zaVKFFC8+bN0/z58+Xu7q6mTZtqxIgROnTokCRp69at2rVrl5YvX6569eqpcuXK+uijj+Tu7q6vvvpKktSuXTv17dtXTz31lPr376+SJUvm+CjJ/6Smpio+Pt5iy+2Gw/0oMtb02LuXu+XJtLe7k6Licn4k/nY1r1NW44Y219z32+jVZ+tq9+EremHUj8rMzLqj4wJFWeTNxzO9PCxPlL09nBUVk5RTFcVeT1ZmljGXOqbjhVfzk5OTnT6a+auSU9J1Izld46ZvVWaWUZHRpuM2ql1OUTE3NHvJPqWlZ+p6Qoo+nrnN1K7onH828hYbl6TMzCx5elnm9/byclV0VHwhtQr/RnxcirIyjXL/2+xtdw9HxUbf3u/BBVN3y9Pb2eLGQe3G5fTKyBZ6d3I79RpYX4f3X9G7Q77jd2ABSIhLzXEMS3k65Zqi6e8WfrZHHt7OCqtnmgRxPTZZKTcytGrhb6rdqJxGTnxYDR4I1IcjftKR/QS/Chrfrfe32FjT+Hh5WaYD8fJyVVQu4xMVlSDvv5f3zr18amq6PvrkGz3aro5cXBxzLPPVyh1q1jRUfn7u/74TuEXu56hO5vNN3L/iYm/k+L3p6eWi6Kic0/v8W1lZWfr4g7WqVTtQwZXvXb7r4iA+LllZmUZ5eFp+/jw8nRVzm9dpsyZvlZe3i+owqx/FgLe3t2xtbXX1quUkratXr/5jPv6kpCQtWbJEvXv3/sefU7FiRXl7e+uPP/64o/bmhedT/4UuXbro0Ucf1ZYtW7Rjxw5t2LBB48eP16xZs5SUlKTExER5eXlZ1ElOTtapU9kLzn700UeqUaOGli9frr179+Z5V2ns2LEaM2aMxb5Ro0Zp1FP3593Vb34+pVFTs/NbTR8VkUfpO/Noi+xHPEOCPBRSwVOt+6zQrt+uqHG4fx41AevxzQ/HNWrCz+bX08e2L5Cf4+nupImjHtGYiT9r4cqDsjEY9GirKqpW2cc8s79yBS+NfTNC4z7bqgmfb5ONrUHPPF5L3h7OFrP/Ady+rxYc1JYf/9T7U9vJ3iH7lO2B1pXMfw8K9lRQsKf6dVmmw/suq1b9soXRVORi5YJD+vXHPzVm6iPmMTTevDdTv3mA2j9RXZJUoYqXjh++pu9WHVP12gQ7gIKSnp6pV4bNk9EojXmnW45lrlyJ09Zfj2nix8/e28ZZkW9+PK5REzaZX08f+1jhNQZFwrj/fq1Tf1zRrAUDCrsp+Jsl83Zr8/cn9OGMLhbnoyi+bK38+t7e3l5169bVxo0b1alTJ0mmG5MbN27UoEGD8qy7fPlypaam6umnn/7Hn3PhwgVFR0erTJky/1g2v/jE/kuOjo5q3bq1WrdurXfeeUd9+vTRqFGj9OKLL6pMmTI5Ppbh7u5u/vupU6d06dIlZWVl6cyZM6pZM/ecysOHD9fQoUMt9jk4OEjnJtyt7txVLRsGKOwvq7WnpZvyUkXHJcv3L3eVo+KSVbWC5y3170R5P1d5uDno7OUENQ6/q4cG7lstm1ZQWLXsPHNpaTc/c7E35OuVvWBMVOwNVQ32uaW+JHmUcpKtjcG8aO9f63j/5XPbrH6AfljcS7HXk2VrayM3Fwc1e3y2ypcpZS7TPiJE7SNCFBVzQ05OJWSQQfOWH1D5Mm53pb/FjYd7Sdna2tyyQFp0dIK8vPk3LQrc3B1lY2u4ZUZ4XGyKPLzyzt2+avEhrVxwUGMmP6Kgyl55lvUr6yY3d0ddvhBP0P8uc3V3yHEMr8ck3zL7/+++/uI3rVr0m0Z92kZBwdnnPa7uDrK1Nah8UCmL8uUCS+n3Q7eXMgj5x3fr/c3DwzQ+f1+0Nzo6Qd65jI+3t6ui/l4+6tby6emZGjxsni5ditX8OQNzneW/YvVOubuX1EMP1riDnhRvLZtUUFjV2zlHTVbVYO973j78O+4ezjl+b8ZEJ8rL2yWXWrdv3Ptfa+vmY5o5v59K+5X65wr4V9zcnWRja7hl0d7YmBvy9CqZSy2T5Qv3aum8PRr32eOqWDnn60nAGg0dOlS9evVSvXr11KBBA02cOFFJSUl67rnnJEk9e/ZU2bJlb8neMnv2bHXq1OmWCeGJiYkaM2aMunTpIj8/P506dUqvv/66goOD1aZNmwLrB+l97lC1atWUlJSkOnXq6MqVKypRooSCg4MtNm9v04lMWlqann76afXo0UPvvfee+vTpo2vXcr+4u1f5pu4WF2c7Bfq7mbfgAHf5eDhp+4HsfN6JN9J06HikwkPv7i+MK1FJiktIlS8L4KEYcXG2V2BZd/MWHOQpH09nbd+XvcBSYlKaDv1+VeHVc545am9nq+pVfLV9X/aCWVlZRu3Ydz7HOh6lnOTm4qAd+84rOu6GWjapcEsZb09nlXSy14afT8rB3lZN6vEYaH7Y2ZdQ1WpltXNH9mKhWVlZ2rXzD4XVynuhc9wf7OxsVSnEW4d2Zy/Cm5Vl1KHdFxVSs3Su9VYuPKhlc/Zr1MS2qlz1n39fRl1LUsL1FHl4kQP3bjONoZd+25t9LpOVZdShPZdVpYZvrvVWL/pNX809qHcmtFZwVcuAlp2drYKreuviOcvUI5fOx8vH786DJ8gb3633N3u7EqperZy277Qcn+07T6h2raAc64TXCtKOHZYLa2/bflzhfyn/v4D/2XORmjfrRXm45xzoMhqNWrl6lzq1ry87u5wXH8U/y/0cNft803yOWo2nm+53dnYlFFqtrHbtzE5BkZWVpd13+L1pNBo17v2vtWnjEU2b01dly93diYEwsbOzVeVQXx34yyK8WVlGHdh9XlXDcv/8LZu/R4tn7dL/Te6kKtVyP28FrFGPHj300UcfaeTIkQoPD9eBAwf07bffmhf3PXfunC5ftly78Pjx49q6dWuOqX1sbW116NAhdejQQVWqVFHv3r1Vt25dbdmypUDjvMz0v03R0dHq1q2bnn/+eYWFhcnV1VV79uzR+PHj1bFjR0VERKhx48bq1KmTxo8frypVqujSpUtat26dOnfurHr16umtt97S9evXNWnSJLm4uGj9+vV6/vnntXbt2sLuXoEwGAzq2bGapi89pKCybipb2lWTFu2Tr6ezIhpnBwGfHfGdIhoH6On2VSVJScnpOnc5+0L4wtVE/f5ntEq5OMjf10VJyema+uUBPdwkUN4eTjp/OUEfzt2rgDJualaHGY6FoaSDk4J9shfmquDlr1rlKismKV7nY29vsUrcOYPBoJ5dwzV94R4FlXVX2TJumjRnh3y9SyqiWXZKrGeHrlJE84p6unMt0+tu4Xrzgx9Vo4qvwqqW1vyvDig5JUOPt61mrrNiw1FVCvSUZyknHTh6We9P2aJeXcNVMcDDXGbRqoOqXb2MnJ3stG3PeX0441cN7dtEbi73783K+93TvVpo5Iglqla9nGrUDNAXC7coOTlNHTvXlyS9PfxL+fqW0stD2kkyLVD55ynTZy49PVPXrl3X8d8vysnZQQGBpsDjjaRUnT8XZf4ZFy/E6PjvF+VWylll/D2Eu6vjf2ro0/d+UXBVb1Wu5qNvlh5RSkqGIh6tLEn6ZMwmefmUVM8XTWO6YsFBffH5Xg0b01K+ZVwUG22aleXoZCcnZzsl30jXktn71KRlBbl7OunKxXjNn7JLZcq5qU6jcrm2A/nX/onqmvzfraoU6qXK1Xy0dukRpaZk6KHHTGM46d1f5OnjrKcH1JMkrVp4SEtm7dfg0S3kk8MYSlLHp2pqwjubVC28tGrULaP9Oy5oz6/n9e6URwqnk8VMQXy34u55rueDeuOtL1SjenmF1QjQ/EWblZycpsdvLqr7+vBFKu1bSsOGmNIa9ny6hZ55brLmzPtZLR6opvUb9unwkfN6d3QPSaYxe3noXB09ekEzpvZVZlaWIm/m+y9Vyln2dtmXxDt2ntSFC9Hq2qXRPe61dTMYDOrZpZamL9qbfY46d+fNc9TsCSTPDlutiGYV9XTnMElSUnKazl28bn7/wuV4/f5HpEq5Osq/tGkdh7j4FF2+lqBrUabc5KfPx0kyTULx8cx7FjNu31M9m2n0W8tVrXo5Va9RXl8s2qrk5DS171RXkjRy+FL5+pbSoCFtJZkW//3z1LWbf89U5NV4HT92Sc7O9iofYPreHPffr/Xt+gP6eFJPOZd0UFSU6YkdFxdHOTraFUIvrVeXp+row9Hfq3I1X4VW99PKL/YrJTldbdqbrvfGj/xOXr4u6j2oqSRp6bw9WjBjh978bxuVLuOmmJufLydnOzk520uS4q+nKPJKgqIjTU+AnD8bK0ny8HKWpzefPRR9gwYNyjWdT05ZXkJCQmQ0GnMs7+TkpO++++5uNu+2EPS/TS4uLmrYsKE++eQTnTp1Sunp6Spfvrz69u2rESNGyGAwaP369Xrrrbf03HPPKTIyUn5+fnrggQdUunRpbdq0SRMnTtTPP/8sNzfTo6YLFy5UrVq1NG3aNA0YYJ256/p0qaHklAyNnLxN8UlpqluttD5/t7Uc7LP/6527Eq/Y+BTz68Mno9RrRPaH4YNZuyVJnVpV0gdDmsvWxqDjp2O1euMpJSSlycfTSU1rl9UrT9eWPTNyCkW9gKraNPQz8+tPug2WJM3bvk7PLXivkFpVPPV5oo6Sk9M18uOfFZ+Yqro1y+jzcR0sP3OXriv2evZnrt1DVRRzPVmT5+1UZEySqlby0efjOlik9zlzPlaffL5d1xNS5O/npv5P1dOz3cItfvZvv1/V5Hm7dCM5TRXLe2jM0Jbq+HBogffZmrV5JFyxMYmaNuU7RUclKCTUX1Nn9JGXt+lC98rlWNkYsnMqRkbG64mun5hfL5i7WQvmblbd+hU1a96LkqSjR86r73PTzWU+Hr9GktS+Yz29+39P3ItuFSvNW1dSfFyKvvh8n2Kjb6hCZS+N+qSt3G/Oyo+6kmgxht+u/F0Z6VkaN2KjxXGe6F1b/+lbVzY2Bp35I0Y/rz+ppIQ0eXo7K7xhWT31Ql3Z2fM7sCA0jaio63EpWvL5fsXFJKtCZU+9PeFhc3qfqKtJMvwlt+l3q44rIz1LH731s8Vxuj8frh59akuSGrYI1AuvN9bKBYc055Od8g8spdfeb6mqtZhJdy8UxHcr7p52j9RRTGySJk3ZoMioeFUNLatZ0/vJ++b4XL4ca7FeUJ3aFfTRuJ6aOHmdJny6VkGBPpo6qbeqVDblyL16LU4//XxYktSx64cWP2vBnIFq2KCy+fVXK3eodngFVarIZ/Fu6/NEbSWnpGvkhJ8Vn5hmOkf9oP3fzlHjLc5RDx+PVK+hq82vP5j2qySpU5tQffBGK0nST9tOa8T4n8xlhr73vSRpYM/6eunZBgXZpWLl4UdqKTY2SdOn/KDoqARVCfXX5OnP/+V7M87icxl5LV5PdZ1kfr1w3i9aOO8X1alXQTPn9ZMkfbV0hySp33MzLX7WqP92VftO9Qq6S8XKgw9X0fXYZC2YvkOx0TdUsYq33p/cSR430/tcu5JgcS6zdsUhpadn6r031lsc5+m+DdWzn+mm6I5f/tRHY34wv/d/IzbcUgbWydZg3Tn9rYnBmNttCNy3jCfH/nMh3JcMlYeb/hzAL8GiyjjNdHJqvDSlkFuC/DD4m+7U38j4ppBbgvxyLmGa2Xks9sN/KIn7VajHa5Kkw9EfFHJLkB81vN6UxPdoUfa/71GlbyjchiD/7ExPBRkvTvqHgrhfGcq+LElKSF9VyC1BfrjadZYknU347B9K4n4V6MpN+/xqsuQ/hd2EfNn2xJeF3YR7jpz+AAAAAAAAAABYCdL7AAAAAAAAAADyZGtDep+igpn+AAAAAAAAAABYCYL+AAAAAAAAAABYCYL+AAAAAAAAAABYCXL6AwAAAAAAAADyZEtK/yKDmf4AAAAAAAAAAFgJgv4AAAAAAAAAAFgJgv4AAAAAAAAAAFgJcvoDAAAAAAAAAPJka0NS/6KCmf4AAAAAAAAAAFgJgv4AAAAAAAAAAFgJ0vsAAAAAAAAAAPJkayC9T1HBTH8AAAAAAAAAAKwEQX8AAAAAAAAAAKwEQX8AAAAAAAAAAKwEOf0BAAAAAAAAAHkip3/RwUx/AAAAAAAAAACsBEF/AAAAAAAAAACsBOl9AAAAAAAAAAB5smX6eJHBUAEAAAAAAAAAYCUI+gMAAAAAAAAAYCUI+gMAAAAAAAAAYCXI6Q8AAAAAAAAAyJOtwVDYTcBtYqY/AAAAAAAAAABWgqA/AAAAAAAAAABWgqA/AAAAAAAAAABWgpz+AAAAAAAAAIA82dqQ07+oYKY/AAAAAAAAAABWgqA/AAAAAAAAAABWgvQ+AAAAAAAAAIA82RpI71NUMNMfAAAAAAAAAAArQdAfAAAAAAAAAAArQdAfAAAAAAAAAAArQU5/AAAAAAAAAECebJk+XmQYjEajsbAbAQAAAAAAAAC4fz2x4dnCbkK+LHlkXmE34Z7j/gwAAAAAAAAAAFaC9D5FUMacJwu7CcinEs9/IUkyXppSyC1Bfhn8B5n+HNCokFuC/DBO2yFJylrTp5Bbgvyy6TBLkmQ8OKqQW4L8MtQaI0lKSv+6kFuC/Chp19H0l8wfCrchyD/b1qY/E5YXbjuQf67dTH/GLy3cdiD/3HpIkq505ZqiKPL76uY1xdoXCrklyC+bx2YWdhOAAkfQHwAAAAAAAACQJ1uDobCbgNtEeh8AAAAAAAAAAKwEQX8AAAAAAAAAAKwE6X0AAAAAAAAAAHmytSG9T1HBTH8AAAAAAAAAAKwEQX8AAAAAAAAAAKwEQX8AAAAAAAAAAKwEOf0BAAAAAAAAAHmyNZDTv6hgpj8AAAAAAAAAAFaCoD8AAAAAAAAAAFaC9D4AAAAAAAAAgDzZMn28yGCoAAAAAAAAAACwEgT9AQAAAAAAAACwEgT9AQAAAAAAAACwEuT0BwAAAAAAAADkydZgKOwm4DYx0x8AAAAAAAAAACtB0B8AAAAAAAAAACtB0B8AAAAAAAAAACtBTn8AAAAAAAAAQJ5sSelfZDDTHwAAAAAAAAAAK0HQHwAAAAAAAAAAK0F6HwAAAAAAAABAnmwM5PcpKpjpDwAAAAAAAACAlSDoDwAAAAAAAACAlSDoDwAAAAAAAACAlSCnPwAAAAAAAAAgT7ak9C8ymOkPAAAAAAAAAICVIOgPAAAAAAAAAICVIL0PAAAAAAAAACBPNqT3KTKY6Q8AAAAAAAAAgJUg6A8AAAAAAAAAgJUg6A8AAAAAAAAAgJUgpz8AAAAAAAAAIE+25PQvMpjpDwAAAAAAAACAlSDo/y9s375dtra2evTRRwu7KQAAAAAAAAAA3IL0Pv/C7Nmz9dJLL2n27Nm6dOmS/P39C7tJ9z2j0agpWy/rq4ORSkjNVO2yLhr5cIACPR1zrbNkf6SW7o/UxeupkqRgbycNaFJGzSuVkiRdvJ6qh6cfzrHuhI4V1SbU4+53pBgxGo2aPHenlq87ovjEVNWpUUajhrRUUDn3POstXnVIs5fuU1TMDYVW8tbbLz+gsKp+5vfPXbyu8dO3au9vl5SWnqnm9QP19sst5O3pbC5z5MQ1fTxzm347dlU2tjZ6uHklvTmwmUo62RdUd3FT8+Bwvdb6adUNCJG/u486TX9dXx/8pbCbBd38TH5/Vst3XlFCcqZqB7lp1OPBCvJxyrXOl9suacn2y7oYe/N7tLSzXmwdoAdCPc1llu24rLX7I3X0YqKSUjO1893GcnPitKAgGI1GTV52WMs3nlJ8UrrqhHprVJ96Cirjmmud3UevafaaYzpyOkaRsSma8mozRTQoZ1EmKi5FHy0+oF8PXVFCUrrqVfXR28/XzfO4yJ+lX27TgrmbFR2VoCohZfT6iI6qUTMgx7Kn/riiaVO+1+9HL+rypVgNe6O9nnqmuUWZvXv+1IK5m/X70QuKikzQx5/2VMtWNe5FV4qFxV9s1uw5GxUZFa/QkLJ6561uCgsLyrX8hm/36dPJ63TxYrSCAn306tBOatGiuvn9yVPWad2GfbpyJVZ2draqXi1AQ15pr1q1so95+sxVjf9wtfbt/1Pp6ZkKCfHXKy89pkYNqxRgT62X0WjUpBkbtXzVHsUnpqhOrQCNfrODggK886y3eNkOzV64VZHRiQqt7Kd3XntMYTVM351x129o8oyftHXHH7p8NU6e7iUV8WBVvTIgQq4upmuTYycua+a8X7T34FnFxt1Q2TIeeqJLffX6T5MC77O1MY3hT1q+eq9pDMMCNPrN9goK8Mqz3uJlOzV70a83x7C03nntUYVV/8sYzvz55hhevzmGoXqlfyvzGEpSSP2Rtxx3wvvd9OjDNe9uJ4shlx595RTRUTbOLko7/pviZ45X5pXzuZfv3kcu3ftY7Mu4eEZRrzxhfm3j7inXZ16SfVgDGZyclXnpnBJXzFPqzp8LrB8wMRqNmvzdGS3fcUUJyRmqXcFNo7pUVpCPc651vtx2SUu2XdLFmBRJUrCfs15sHagHqub92QZw7zHT/zYlJiZq6dKlGjBggB599FHNmzfP4v01a9aocuXKcnR0VMuWLTV//nwZDAbFxcWZy2zdulXNmzeXk5OTypcvr5dffllJSUn3tiP32OydV7V47zWNahOoL58JlZOdjV5YdlKpGVm51intaqchLcpqea+qWtarqhoGumrQylP6IzJZkuTnaq9NA8MstoHNysjZ3kbNKrrdq65ZrVlL9mnhyoMaPaSlln3WXU6Odurz+tdKTcvItc76n07og2lbNLBXA62c+YRCKnmrz+trFB17Q5J0IzldvV9fLYNBmjehs76Y3FXpGZka8NY3ysoySpKuRiXq+VdXK6BsKS39rLtmjeugP87EaPgHP96Tfhd3JR2cdPDiSQ1c8lFhNwV/M2vTBS3aekmjH6+spS+Fy9neRn1nHVZqeu7fo37uDhraroK+eqW2lr8SrkbB7ho076hOXsn+nZOcnqXmIR7q91D5e9GNYm3W18e0cMMJje5bT8v+r7WcHEqoz/ublJqWmWud5NQMhQa5a2Tvejm+bzQaNfDDLbpwLUmfvdZcK8e3kb9PST3/3s+6kZL79zX+ve82HNCE8d/ohQER+mL5K6ocUkYD+81WTHRijuVTktNVtpynXh78iLy9c74Bk5KcpiohZfTmW50LsunF0voNezV23CoNfPERrfrqDYWGllXvF6YqOjohx/L79v+pYa/NU9fHG2v1ijfVqlUtDXxppk6cvGQuExTkq5FvddM3q0foi4VDVbasp57vO0UxMdnH7D9gujIzszR/7staufx1hYaUVf8XpysyMr7A+2yNPp+/RQuX7NDo4R21bF5/OTnaq/dL85Wamp5rnfXf/6axn2zQwL4ttWrRiwqt4qfeL81TdIzps3otMkHXIuP1xuC2Wrv0JY0d/bi2bD+pt95dZT7G4d8vydPTRR++203rlr6s/s+30IQpP2jR0h0F3mdr8/mCrVq4dKdGD2+vZXNfkJOTvXq/tOCfx3DitxrY50GtWthfoZX91PulBX8bwwS98UobrV0ySGNHddaW7X/orfdW33KssSM7a+uG18xbRIvQgupqsVGy0zNybtdd8TPHKXpEHxlTk+XxzkTJLu8JWunnTulan3bmLfrtfhbvl3pplGz9AxQ37jVFD31KKTs3yX3of1WiAjdNC9qsn89r0ZaLGt21spa+UlvO9rbqO/O3vK8zStlr6KMV9NWQOlo+pI4aBXto0NwjFtcZsG42NoYiuRVHBP1v07JlyxQaGqqQkBA9/fTTmjNnjoxGU7Dy9OnT6tq1qzp16qSDBw+qX79+euuttyzqnzp1Sm3btlWXLl106NAhLV26VFu3btWgQYMKozv3hNFo1MI9V9WvsZ8equyuEF9njX2sgq4lpmvjibhc67UMdtcDlUop0NNRQZ6OeuWBsnK2t9HBS6ZfIrY2Bvm42FlsG0/EqW2Ih0ra296j3lkno9GoBV8dUP9n6qtVs4oKqeStccNb61pUkn7c+meu9eYtP6Buj1ZXl0eqKTjIU2OGtpSjYwmt2HBUkrTv8GVdvJKgsW+0VkhFb4VU9NYHb7bW4ePXtGO/aWbIpu1nVKKEjUa+8qAqBnioZmhpjR76oL7/5ZTOXoy7F90v1r49sl3vrJmh1Qc3F3ZT8BdGo1ELtlxU/1YBalXDSyH+JfXBEyG6Fp+qH49E5VqvZTUvtajqqSAfJ1XwcdbgR4LkbG+rg+eyA1S9mpdV34fKq1Ygs8ILktFo1IL1x9X/8epqVb+cQgLdNW5QQ12LTdaPuy/kWu+B2v4a/ESYWv9tdv//nLmcoIMnozWqTz3VDPZSRX83je5TTylpmVr369mC6k6xtHjBFnXu2lAdO9dXxUql9dbIx+XoaKevV+3OsXz1muU15NXH1KZduOzsc356pmnzUA18ua0eimB2/902d95P6t6tibo83ljBwWU0ZtQTcnS014qV23Msv2DhJjVvVlV9ekeoUiU/DX75MVWrVl6LFmf/Pmz/WH01aRKq8uW9VblyGQ1/43ElJqbo+HHTjYGY2ESdORupF/q0VmhIWQUF+WrY0I5KTk7Tyb/cPMDtMRqNWvDlNg3o/aAiHqyq0Mp+Gv9uV12LTNCPm37Ptd7cxb+qe6d66tKhroIr+mrM8A5ydLTTijV7JUlVgktr8odP6qEHQhVQzkuN61fS4Bdb66ctx5SRYboJ27VjXb396qNqULeCypfzVMd24Xq8Qx19//ORe9J3a2Eaw+0a8PwDimhxcwzHPK5rUQn6cfOxXOvN/WKbuneqqy4d6twcw/Y3x3CfpJtjOP6Jm2Poqcb1K2rwgFb6actx8xj+j5uro3y8Xc2bg4Ndgfa5OHB+tIcSV8xV6u4tyjj7h65PHiNbD285Nngg74qZmcqKizFvxoTrFm/bVampGxuWK/2Po8q8dklJK+bKeCNRdhW5UVOQjEajFvxyUf0jAtWqhrdC/F30wX9CTdcZh/O4zqjurRZVvRTk42y6zmhXwXSdcZab3MD9hqD/bZo9e7aefvppSVLbtm11/fp1bd5suhiYMWOGQkJC9OGHHyokJERPPPGEnn32WYv6Y8eO1VNPPaXBgwercuXKatKkiSZNmqQFCxYoJSXlXnfnnrhwPU1RSRlqFJQ9+97VwVZh/iXNAfx/kpll1PqjMUpOz1KtsiVzLHPkSpKOXUvW42F5P+6Lf3bhcrwiY26oSd3smb+uLg4Kq1paB45cybFOWnqmjpy4ZlHHxsagxnXKm+ukpWfKIMneLvumjIN9CdkYDNr722VzGbsSthZ3YB0dTMGS/5UBipsLMSmKSkhX48ru5n2uTiUUFuCqg2dznrX6d5lZRq07cE030jIVToD/nrtwLUmRcSlqElbavM/V2V5hwV46cCI638dNu/nEnINd9qmcjY1B9nY22nssMv8NhoX09Az9fvSiGjYKNu+zsbFRw0aVdeggN1fuN2lpGTpy9LyaNAox77OxsVGTxiHaf+B0jnUOHDitxo0tA0vNmlbVgYNncv0ZS5f9KldXJ4WElpUkebiXVIUKpbV6zS7duJGqjIxMLV26VV5erqpePec0UMjdhYuxioxOVJMGlcz7XF0cVatGOe3/Lec0ImnpGTpy7JKaNMyuY2NjoyYNKmn/odxTjyQmpsilpINKlMh94lBCYorc3XJPdYFb5TqG1cvmOh6mMbxsUcc8hr/lfpM8MTE1xzEcM36tGkZ8oK69ZuirNfvME/aQP7a+/rL18Fbaoewb3sYbSUo/eUR2VfJOm2Rbprx8Zn4j76krVOqVMbLxLm3xfvqJ3+TYNEIGFzfJYJBj0wjJzl5pR/YVSF9gYrrOSFPjKtnpkU3XGW63HcDPzDJq3f7/XWeQdQG435C89zYcP35cu3bt0qpVpkc/S5QooR49emj27Nl68MEHdfz4cdWvX9+iToMGDSxeHzx4UIcOHdLixYvN+4xGo7KysnT69GlVrVr1lp+bmpqq1NRUi30ODg4qKnPZoxJNj256l7ScVeHlbKeopNwf65SkE5HJenLhMaVlZMnZ3laTOldSsHfO+atXHIpWRS9H1S7ncncaXoxFxpjS8Xh5WF7YeHs4Kyom5xs1sdeTlZllzLHO6XOxkqTwan5ycrLTRzN/1ZA+jWU0Sh9/vk2ZWUZFRpuO26h2OY37bKtmL9mnZ7rUUnJKuj6euc3UrmgeFUTxFJVg+q70crV8bNrbxV6RCWl51j1xOUn/mXJAqTe/Ryf3qqbg0jnfPEXBiYwz3dj3KmW5lo13KUdFxSXn+7gV/d3k7+2sCV8c0pgX6svJ0Vbz157Qlehk88/EnYuLTVJmZpY8vSxvmHl6uejM6WuF1CrkJjYuUZmZWfL6W1olLy83/fnn1RzrREXFy/tv4+vl7aqoKMuAx8+bftPQYXOVnJIuHx83zZk1SJ4epnNPg8GgebMH6cWXZqpO/VdlY2OQp6eLZs14UaVKESz+tyJvps7y8rI8t/fydFFULmmaYuNumMbe89Y6f57JecZqTFySPpv1s3p0rp/j+5K07+A5bfj+N8349Jl/04ViL9cx9HJRVC6p0bLH0PJcxcuzpP48k/PN7Ji4JH02e5N6dLZMhfdyv4fUqH4FOTnaa+uOPzRm3FrduJGmnk80ym+Xij0bD1O+9qy4GIv9mddjZOOeey73tJNHlD71PWVeOicbdy+5dO8tr/emK2rIUzKmmK494z5+S+5D/6vS876XMSNDxtQUxX34hjKv5H6zB3cuKt50LeHlahmv8Xa1V2T8P11nJOo/k/ZnX2c8V13BflxnFBe2xTNTTpFE0P82zJ49WxkZGRYL9xqNRjk4OGjKlCm3dYzExET169dPL7/88i3vBQTkPANo7NixGjNmjMW+UaNG6e37dMLQ2iPRGv3dOfPraV2D8yidtyBPB614rqoSUzP1/fE4jVh3RvOerHJL4D8lPUvrj8aof5My+f5Zxdk3PxzXqAnZCyRNH9u+QH6Op7uTJo56RGMm/qyFKw/KxmDQo62qqFplH/PM/soVvDT2zQiN+2yrJny+TTa2Bj3zeC15ezgX2/xrKH6+2XdNo1ecNL+e9nz1PErnLcjHSSuH1FFiSoa+OxSl4UuPa8GAMAL/BeybLWc0auYe8+vpw//hkfd8sitho0mvNtPb03ap4fMrZWtjUOOapfVA7TJiMiNw9zVsUEWrVw5XbFyili3fpsFD52j5klfl5eUqo9GoMe8tk5enqxYvHCxHR3st/2qb+g+coa+WvSZfn1KF3fz72poNBzTq/9aYX8+YWPAB9sTEFPV7ZaEqVfTVoH4P5VjmxB9X9eKwRRrYt6WaNapc4G0qytZsOKhRY78xv57xyVMF/jMTE1PUb/AiVargo0EvtLR4b2CfB81/rxZSRsnJaZq9cCtB/3/BsXkbub3whvl17Nhh+TpO2v6/pFY7+4diTx6Rz7TVcmzSSsk/mf7PuDzRT4aSrooZM0hZ8XFyaNBC7kPfV8w7/ZVx7tQd9QPZvtl7VaO/OmF+Pa1P/he2DvJx1sph9ZSYnKHvDkVq+JfHteDFWgT+gfsMQf9/kJGRoQULFujjjz/Www8/bPFep06d9OWXXyokJETr16+3eG/3bss8r3Xq1NHRo0cVHHz7gfDhw4dr6NChFvscHBykxc/9y17cGy2D3VXTP/tLPj3DFHWISkqXj0v23ePoG+kK9c171pO9rY0CPUyzIqv7ldThy0latOeaRrcNtCj3/fFYJadnqUMNz7vVjWKlZdMKCquW/Xhl2s1FJaNjb8jXK3sso2JvqGqwT47H8CjlJFsbg3nR3r/W8fbMHudm9QP0w+Jeir2eLFtbG7m5OKjZ47NVvkz2hXD7iBC1jwhRVMwNOTmVkEEGzVt+QOXL8KggioeHqnkqLKCO+fX/UrhEJ6TJ1y17tn9UYpqq+uf9dJN9CRsF3rxRWr2cq347n6iFWy5pTFcCFwWpZb2yCqucPeMt7eZCaNHXU+TrkX3jOup6iqoGedxS/9+oUdFTqz9sq4QbaUrPyJKnm6O6j/heNSryO/FucfcoKVtbG8X8bXZxTHTiLbPJUfg83F1ka2uj6CjL8YqOjpe3d87nEt7ebrfMHo+OSrilvLOzgwIDfRQY6KPwWhX0cNsx+mrFNvV7oY127DihTZsPa/eO8XJxufm9O7KHtm07ptWrd+qFvpbXELD00ANVVatGdprItDTTYuTR0Yny/cvnLDomUaFVcp7o4+HubBr7GMtZ5NExifL+22zzxKRU9Xl5vkqWtNfUD5+UXQ6pff7485qefXGOenSurxf7tLzlfVh66IFQ1aqRvQaN+Zri72MYfTtjaPmEb3RM0i1P45jGcKFKOjto6of/yXEM/6pWjXL6bPZmpaVlyD6XtVZgKXX3FkWfzF7LwlDCdD1v4+6prLjs9IS2pTyVfubkLfVzY7yRqMzL52TrZ/r/Ylu6rEq266aowf9RxgVTGraMs3/Ivmq4nNt2UfzM8XejO5D0UHUvhQVmPxWTfZ2RLl83B/P+qIQ0VS37L64zyrvqt/MJWrjlosZ0Y/Fl4H5CTv9/sHbtWsXGxqp3796qUaOGxdalSxfNnj1b/fr107Fjx/TGG2/oxIkTWrZsmebNmyfJ9LivJL3xxhvatm2bBg0apAMHDujkyZP6+uuv81zI18HBQW5ubhabg4NDruULW0kHWwV6OJq3St6O8i5ZQjv/knc6MTVThy4lqZb/v7sDnGWU0jJvnbq48lCUWgaXkqczCzPlh4uzvQLLupu34CBP+Xg6a/u+7FybiUlpOvT7VYVX98vxGPZ2tqpexVfb92U/fpmVZdSOfedzrONRykluLg7ase+8ouNuqGWTCreU8fZ0Vkkne234+aQc7G3VpN59+ngLcJeVdCyhQG8n8xZc2lnernba8UecuUxiSoYOnUv41wvwGo1G88k9Co6Lk50C/VzNW3A5N/m4O2r7b9mpRRJvpOvQH9EKr5L74/D/hquzvTzdHHXmcoIOn4rVQ/XL3pXjQrKzK6Gq1cpq184/zPuysrK0a+cfCqsVmEdNFAZ7+xKqXq28tu84bt6XlZWl7TtOqHb4recbkhQeXkE7/lJekrZtP6bwWkF5/qwso9EcnE5OMaVBMBgsL60MNgZlZfHozT9xKemgwPJe5i24oq98vFy0fXf2DN/ExBQdPHxBtWuWz/EY9nYlVD3UX9t3/Wnel5WVpe27/1TtsOw6iYkp6j1onuxK2GrahKdzXNz15Kmr6tl/tjo9WltDBra+iz21XreOoc/NMcwej8TEFB08ctFiPP7KNIZlLOqYx7Bm9g2FxMQU9X5pvuzsbDVtwpO3tUDv7yeuqJSbEwH/f8GYckOZVy6Yt4wLp5UZGyX7mtnpsAxOzrKrXF3pJ3677eMaHJ1kW7qs+caBwcE00e+WNReyMiUD4aq7KefrDHvtOBlrLmO6zohXrX+Zn99oFNcZwH2I33r/YPbs2YqIiFCpUrc+ltulSxeNHz9eCQkJ+uqrrzRs2DB9+umnaty4sd566y0NGDDAHKQPCwvT5s2b9dZbb6l58+YyGo2qVKmSevToca+7dM8YDAY9U6+0Zmy7rAAPB5Vzd9DkLRfl62KnVlXczeWeX3JCrSq766m6vpKkTzZfVPOKbirjZq+ktCytOxqj3ecSNLO75ezUs7Ep2nM+UdO65T+NECwZDAb17Bqu6Qv3KKisu8qWcdOkOTvk611SEc0qmss9O3SVIppX1NOda5ledwvXmx/8qBpVfBVWtbTmf3VAySkZerxtNXOdFRuOqlKgpzxLOenA0ct6f8oW9eoarooB2TNdF606qNrVy8jZyU7b9pzXhzN+1dC+TeTmcv/e7LIWJR2cFOyTfUFVwctftcpVVkxSvM7H5pwHGQXPYDCoZ/Oymr7xvAK9nVTO01GTvjsrXzcHRVTPXrz8uRmHFFHDW081NaWhm7D+tJqHesrf3UFJqZlau/+adv15XZ/3qWGuExmfpqiENJ2NMuV/P3E5SSUdbFXGw0Hu3Ei9awwGg3q2C9H0lUcUVMZVZX1LatKS3+Tr4aSI+tmfuWff/UkRDcrp6bamGVJJKek6dyV7xuqFa0n6/UysSrnYy9/bdOP82+3n5OHmIH/vkjpxLk7vz9unVvXLqlktUt7dTU/1bK5Rby1TterlVL1GeX2xaKuSk9PUoZNpttw7w5fI17eUXhryiCTT4r9/nrpm/vu1q9d1/NglOTnbKyDA9Lm9cSNV589lz5S8eDFGx49dklspJ5Upc2dPgBR3zz37kN4YvlA1agQorGaQ5i/4WcnJqXq8symtx+tvLlBp31IaNrSjJKnnMw/qmV4TNWfuRrVoUV3r1+/V4cPn9O6Y/0gyjdX0Gd/poYdqyse7lGLjErX4i1909Wqc2rYxPZkVHl5Bbm7OenPEAg0c8IgcHO20bPk2XbwQrQdb5D9NW3FlMBjU8z9NNG32JgWW91K5sh76dNpG+fq4KuLB7HXQeg2Yo9YPVtPTPUxj+9xTTfXG6BWqUc1fYdXLaf4X25ScnKbH29eVZAoWPz9onpJT0vXhe08qMTFViYmm9dM8bz7Vc+KPq+o1YI6aNQrWc081VeTNp0ZsbW3k6UHaittlGsPGmjZnc/YYTt8oX29XRbTIXji714C5at2ymp7u3lCS9NyTTfTGmFWqUfXmGH65/eYYmj5riYkpev6lBaYxfLdrjmP40y/HFB2TpFo1ysnBoYR+3XlKM+b+ouefbnrv/yGszI11S+XS5VllXj6vzGuX5PLEC8qMjVLKrl/MZTxGTVbqzs268e1XkiTXni8pZc9WZUVekY2nt1y695WyspS89XtJUsbFM8q4fF6l+r2hhAWTlZVwXQ4NWsg+rEG+Uwrh9hgMBvV8oKym/3jOdJ3h5ahJG86YrjNq/OU6Y9pBRdT01lPNTJNKJqz703Sd4eGopNQMrd13TbtOxenzvvlPF4SihezLRQdB/3/wzTff5PpegwYNzHekw8LC1KFDB/N777//vsqVKydHx+yF++rXr6/vv/++4Bp7H+rdsLSS07M0+ruzSkjJVJ1yLprRvbIcSmTftT8fm6q45Azz65ikdA1fe0aRSelydbBVFR8nzexeWU0qWN5tXnUoWqVd7dS0Aqlf7qY+T9RRcnK6Rn78s+ITU1W3Zhl9Pq6DHP4yM+bcpeuKvZ69UGS7h6oo5nqyJs/bqciYJFWt5KPPx3WwSO9z5nysPvl8u64npMjfz039n6qnZ7uFW/zs336/qsnzdulGcpoqlvfQmKEt1fHhUKHg1Quoqk1DPzO//qTbYEnSvO3r9NyC9wqpVZCkPg+WU3JapkZ9dVLxKRmqE1RKM/tUl4Nd9vfouegUxf5lgfToxHS9ueS4IuPT5OpYQlXKlNTnfWqoaZXsYOLSHZc19YfsdViemXZIkvR/3auoc/3stF+4c306hio5NUMjZ+xW/I001Q310ecjWsjBPjsdwbmriYqNTzW/PnwqRr3GZK+58sGC/ZKkTi2C9MFAU4DrWmyKPliwX9FxqfLxcFTHB4I0oCsBxrutzSPhio1N0rQp3ys6KkEhof6aMr23Ob3PlctxFmvPRF6L13+6TjS/XjjvFy2c94vq1quoz+f1lyQdPXxBLzw/w1xmwvi1kqT2HetqzPvWOyHkXmj3SF3FxCRq0uR1ioxKUNXQspo1Y6A5Xc/lyzEW41WndkV9NP5ZTZy0VhMmfqOgQB9NnfyCqlQ23US1tbXRn6evatUrOxUbmyR3d2fVrBGoxQuHqHJl0w02Tw8XzZr5oiZ++o16PTdJ6RlZqhzsp6lTXlBoaLlbG4l/1LdXcyWnpGnk/32t+IQU1Q0P0KxJvSxmdZ+/EKPYuOxUMO0erqmY2CRNmr5RkdGJqlqljGZN7mVO73Pk2CUdPGx6MrV1p08sft7GNcNUzt9D3208rJjYJK3ZcFBrNhw0v1+2jLt++ubVguyy1enbs5mSk9M08v/WKD4xRXVrBWjWpGcsx/Bi7K1jGHdDk2b8dHMM/TRr0jPZY3j8cvYYdp5o8fM2fj1E5fw9VKKErRYv36n/+2SDZJQCynnqzSFt1b1T3YLvtJVLWr1QBgdHufV7UzYlXZR27JBi/ztYSs9e9LVE6XJKd3M3v7bx8pX74Hdl41pKWfFxSjt2UNEj+sgYH2cqkJmp2PeHyvXpF+X+5kcyODop88oFXZ/yruV6ACgQfVqWv3mdcULxyRmqU6GUZr5Q82/XGcm3Xmd8ecx0neF08zqjb001DSG9JHC/MRhveY4K+fHZZ5+pfv368vLy0q+//qqXXnpJgwYN0n//+9+7/rMy5jx514+Je6PE819IkoyXbm8BaNx/DP6mlFyGASwEVhQZp+2QJGWt6VPILUF+2XSYJUkyHhxVyC1BfhlqjZEkJaV/XcgtQX6UtDPNkFfmD4XbEOSf7c2UNQnLC7cdyD/XbqY/45cWbjuQf26mG7xXunJNURT5fXXzmmLtC4XcEuSXzWMzC7sJRdZb24vm//v3Gxe/MWem/11y8uRJ/fe//1VMTIwCAgI0bNgwDR8+vLCbBQAAAAAAAAB3zJb0PkUGQf+75JNPPtEnn3zyzwUBAAAAAAAAACggLIcOAAAAAAAAAICVIOgPAAAAAAAAAICVIL0PAAAAAAAAACBPNgaS+hcVzPQHAAAAAAAAAMBKEPQHAAAAAAAAAMBKEPQHAAAAAAAAAMBKkNMfAAAAAAAAAJAnW1L6FxnM9AcAAAAAAAAAwEoQ9AcAAAAAAAAAwEqQ3gcAAAAAAAAAkCcb0vsUGcz0BwAAAAAAAADAShD0BwAAAAAAAADAShD0BwAAAAAAAADASpDTHwAAAAAAAACQJ1sDSf2LCmb6AwAAAAAAAABgJQj6AwAAAAAAAABgJQj6AwAAAAAAAABgJcjpDwAAAAAAAADIkw0p/YsMZvoDAAAAAAAAAGAlCPoDAAAAAAAAAGAlSO8DAAAAAAAAAMiTLel9igxm+gMAAAAAAAAAYCUI+gMAAAAAAAAAYCUI+gMAAAAAAAAAIGnq1KkKCgqSo6OjGjZsqF27duVadt68eTIYDBabo6OjRRmj0aiRI0eqTJkycnJyUkREhE6ePFmgfSDoDwAAAAAAAADIk41N0dz+jaVLl2ro0KEaNWqU9u3bp1q1aqlNmza6du1arnXc3Nx0+fJl83b27FmL98ePH69JkyZp+vTp2rlzp0qWLKk2bdooJSUlP8NwWwj6AwAAAAAAAACKvQkTJqhv37567rnnVK1aNU2fPl3Ozs6aM2dOrnUMBoP8/PzMW+nSpc3vGY1GTZw4UW+//bY6duyosLAwLViwQJcuXdLq1asLrB8E/QEAAAAAAAAAVik1NVXx8fEWW2pq6i3l0tLStHfvXkVERJj32djYKCIiQtu3b8/1+ImJiQoMDFT58uXVsWNHHTlyxPze6dOndeXKFYtjlipVSg0bNszzmHeKoD8AAAAAAAAAIE+2BkOR3MaOHatSpUpZbGPHjr2lf1FRUcrMzLSYqS9JpUuX1pUrV3L8NwkJCdGcOXP09ddfa9GiRcrKylKTJk104cIFSTLX+zfHvBtKFNiRAQAAAAAAAAAoRMOHD9fQoUMt9jk4ONyVYzdu3FiNGzc2v27SpImqVq2qGTNm6L333rsrPyM/CPoDAAAAAAAAAKySg4PDbQX5vb29ZWtrq6tXr1rsv3r1qvz8/G7rZ9nZ2al27dr6448/JMlc7+rVqypTpozFMcPDw2+zB/8e6X0AAAAAAAAAAMWavb296tatq40bN5r3ZWVlaePGjRaz+fOSmZmp3377zRzgr1Chgvz8/CyOGR8fr507d972MfODmf4AAAAAAAAAgDzZGAq7BQVv6NCh6tWrl+rVq6cGDRpo4sSJSkpK0nPPPSdJ6tmzp8qWLWteE+Ddd99Vo0aNFBwcrLi4OH344Yc6e/as+vTpI0kyGAwaPHiw/vvf/6py5cqqUKGC3nnnHfn7+6tTp04F1g+C/gAAAAAAAACAYq9Hjx6KjIzUyJEjdeXKFYWHh+vbb781L8R77tw52dhkJ8+JjY1V3759deXKFXl4eKhu3bratm2bqlWrZi7z+uuvKykpSS+88ILi4uLUrFkzffvtt3J0dCywfhiMRqOxwI4OAAAAAAAAACjyphwaUNhNyJdBYdMKuwn3HDn9AQAAAAAAAACwEqT3KYKyjBv/uRDuSzaGVpKkGxnfFHJLkF/OJdpLkrLW9CnkliA/bDrMkiQZBjQq5JYgv4zTdkiS1p4ZVsgtQX49FvSxJGnX1XcLuSXIjwalR0qSjDELCrklyC+DZ0/TX4w/F25DkH+GlqY/U9cVbjuQfw6PSpJmHC6aM2aLu341TDOGfT55rJBbgvyKHLK2sJtQZNkWg5z+1oKZ/gAAAAAAAAAAWAmC/gAAAAAAAAAAWAnS+wAAAAAAAAAA8mRDep8ig5n+AAAAAAAAAABYCYL+AAAAAAAAAABYCYL+AAAAAAAAAABYCXL6AwAAAAAAAADyZGsgqX9RwUx/AAAAAAAAAACsBEF/AAAAAAAAAACsBOl9AAAAAAAAAAB5siG7T5HBTH8AAAAAAAAAAKwEQX8AAAAAAAAAAKwEQX8AAAAAAAAAAKwEOf0BAAAAAAAAAHmyJad/kcFMfwAAAAAAAAAArARBfwAAAAAAAAAArARBfwAAAAAAAAAArAQ5/QEAAAAAAAAAebIxkNS/qGCmPwAAAAAAAAAAVoKgPwAAAAAAAAAAVoL0PgAAAAAAAACAPNmS3afIYKY/AAAAAAAAAABWgqA/AAAAAAAAAABWgqA/AAAAAAAAAABWgpz+AAAAAAAAAIA82RhI6l9UMNMfAAAAAAAAAAArQdAfAAAAAAAAAAArQXofAAAAAAAAAECeSO9TdDDTHwAAAAAAAAAAK0HQHwAAAAAAAAAAK0HQHwAAAAAAAAAAK0FOfwAAAAAAAABAnsjpX3Qw0x8AAAAAAAAAACtB0D8HBoNBq1evliSdOXNGBoNBBw4cKNQ2AQAAAAAAAADwT4pl0D8yMlIDBgxQQECAHBwc5OfnpzZt2ujXX3+VJF2+fFmPPPLIvzrmqlWr1KhRI5UqVUqurq6qXr26Bg8eXACtBwAAAAAAAAAgZ8Uyp3+XLl2Ulpam+fPnq2LFirp69ao2btyo6OhoSZKfn9+/Ot7GjRvVo0cPvf/+++rQoYMMBoOOHj2qH374oSCaf19bvHiz5sz+QVFR8QoNLae33u6usLCgXMt/++0+Tfr0G128GK3AQF8Ne7WTWrSoYVHm1KnL+vij1dq9+6QyM7NUqZKfPp30gvz9PSVJPZ/5RLt3n7So06NHM40e8+Rd719xtPSLXzV/7iZFRyWoSkgZvTGis2qEBeRY9tQfV/TZ5O/0+9ELunwpVq++0UFP9XzAoszePae0YM4mHT16UVGR8Zow6Vm1bFUjx+Ph7jAajZr8/Vkt33lFCcmZqh3kplGPByvIxynXOl9uu6Ql2y/rYmyqJCm4tLNebB2gB0I9zWWW7bistfsjdfRiopJSM7Xz3cZycyqWv1buC82Dw/Va66dVNyBE/u4+6jT9dX198JfCbhYkbV1zRpu+OqWEmFT5V3RT5xerKyDUI8eyh7Ze1sYlfyjqUpKyMozyLltSLbpUVL2IcuYyqckZWjf7dx3eflVJ8Wny8nNWs44V1OSxwHvVpWLvh5XHtX7J77oek6zylTzU85V6qlTNO8eyuzef0zeLjujqxQRlZGTJr5ybHukRqmZtKt7jVhcfRqNRkz//RcvX7Fd8QqrqhJXTqNcfUVB5zzzrLf5qj2Yv3qGomESFBpfW20MfVlj1sjke/4WhS7Rlx5+a8kFXRbQIsXh/5bqDmvflLp05Hy2Xkg5q27KqRr7W9q720dotXrxJs2d/r8ib1xTvvN1DYWEVci2/4du9+vTTNbp4MVpBgb569dXOatGipvn9N9+cp1Wrd1jUadasmmbPetn8etr09dq86bB+P3ZednYltGf3J3e/Y8XE4iVbNXvez4qMSlBoFX+9M7yzwmrm/jtqw/cH9OmUb3XxUoyCArz16pDH1KJ5NfP73/94SEuWb9ORoxcUd/2GVi8bpqqhlp/Nc+ejNO7jNdq7/7TS0jLUvGmo3hn+uLy9XAusn8XNgQ0XtOfrc0qKS5NPkIta9q6iMpXd/rHesa1Xtf6TI6pU31sd3wwz709LztCWRad0aleUkhPTVcrXUbXblVetNrd+7+LOPV/rUQ2s+7h8S3roSORpDf95hvZfPZFr+X61O+jZsHYq6+ajmOR4fXPyV/1363ylZqZLkl5r9KReb2wZczkZc15N5g8o0H6g8NkYiuX88SKp2I1UXFyctmzZonHjxqlly5YKDAxUgwYNNHz4cHXo0EGSZXqf/zl27JiaNGkiR0dH1ahRQ5s3bza/980336hp06Z67bXXFBISoipVqqhTp06aOnWquczo0aMVHh6uGTNmqHz58nJ2dlb37t11/fr1e9Lve2H9+j0a98EKDRz4qFasHK6QkLLq22eyoqMTciy/f98pvTpsjrp0baKVq4arVUQtvTRohk6cuGQuc+5cpJ56coIqVCyt+QuGaPXXb2nAi+3k4GBncaxu3Zrqly1jzdurr3Uu0L4WF99tOKCPx69Rvxdb64vlg1UlxF8v9vtcMbmMaUpymsqV99TLQ9rJ2zvnE+zk5DRVCfHX8LcZo3tl1qYLWrT1kkY/XllLXwqXs72N+s46rNT0rFzr+Lk7aGi7Cvrqldpa/kq4GgW7a9C8ozp5JclcJjk9S81DPNTvofL3ohv4ByUdnHTw4kkNXPJRYTcFf7F/0yWtmXlUDz9VRUOmNpd/RTfNfGuXEuJScyzv7GqniP8E6+WJTTVs+gOq/3A5Lf34oI7tuWYus2bGUR3bE6knXw/XG58/qOadK2jV1MM6vP3KvepWsbZj4xl9MXWfOj9bU+/NaqeAYA+Nf/VnXY9NybG8i5uDOjxTQyM/a6P/m/uoHnikoj7/YIcO7bqUY3ncuVmLtmvh8t0a/fojWjb7WTk52anP4C+VmpqRa531Px7VB5N+1MDezbVyXm+FVPZVnyFLFB2TdEvZ+Ut2yZDLInZzv9ypidM3qe8zjbV2cT/NnfSkmjXiBs+/sX79Ho394CsNHPiYVq0codCQcurdZ7Kio+NzLL9v3ykNGzZbXbs21epVb6lVRLgGDpquEycuWpRr3ry6tm4ZZ94mfNzb4v30tEy1bVtH/3miRYH1rThY/+1+jf3waw3s30arlg5VaIi/evefmes14b4DpzXsjUXq2rmBVi8bplYP1dTAV+bqxMnL5jI3ktNUp3YFvTr4sRyPceNG6v+zd5/hUVRtHMbv3fTeE0iBkASSUBJ6kyICUkQREbsIiAqKqCAoqBQbWEABKQpKERBEEVEQFBBsFOm9955Ket19P6zvhkASEYFI8v957SU7e87sOTvZ2TnPnHmGXk99jMFgYObUvnwx81lyc/Pp8+w0TKbij3flyu37/RxrZhyg8X2hPPJeA/wqu7Lwja1kXMgpsd6F85n8MvMgQdEel722ZsZBjm5NpMNz1ekxrhF17whh1bT9HPoz7np1o9y6u1pzXm/Rm/fXfUHrOc+xK/4IX97zOr5Ol28XgHsiW/Jqsx68t+4LbpnZl+d/HM/d1Zrzyi2PFSq3J/4YNT5+xProNP+lG9EdEblC5S7o7+rqiqurK4sWLSI7u+gBd1EGDRrEwIED2bJlC02aNOHOO+8sdGXArl272LlzZ4nrOHjwIF9++SXfffcdy5YtY8uWLTz99NP/qj//JTNnrKJbt1u4p2sTIiIqMmLkgzg62rPw6z+KLD/r859p1qw6jz/elvDwijz33J1EVw9h7pzV1jIffriYFi1rMGjQPVSvHkKlSn7cdlsMPpfM2HB0ssfPz8P6cHUtfgazXLnZM9dwz72N6NylIeERFXhleFccHe1YtPDPIsvXqFWJF168k/Yd62BnX/SM72bNo3nmuQ7c1qZWka/LtWU2m5n16yn6tK5E65o+RAa6MPqBSM6nZLNiV3yx9VpV96FltDehfk5U8XPm+Q6hONvbsO14wYDtseZBPHFbCLGVNYPqv2DZrrW8tvhjFm1b8/eF5Yb5ZeFhGrcPoWG7ECpUdqNr/1rYORjZsPxEkeUjYn2pdUtFAiq54RvoQosuYVQMc+PIriRrmaO7k2jQNpiIWF+8KzjTpGNlAsPcObEv+Qb1qnz74cu93NopghYdwwkK9aDnwIY4ONrwy5JDRZaPrhNA/RYhBIV6EBDkRrtuUYSEebJ/u4Ia14PZbGbW/A306dGM1i0iiYwI4J1hd3E+PpUVv+wrtt6ML9bT7a7adO0US0QVP0YO7oijgy1ff7+tULk9+88y/Yv1vPXK5cHHCymZjPt4Ne8Mu4s729WkUrAXkREB3Na82jXvZ1k2fcYK7ut2C127NiUiIpCRIx/C0dGOr4sdU6yiebMa9H78dsLDK/L8c3dRvXolZl80pgCwt7ctNF7w8HAp9Hr//nfSo0cbqlULvF5dKxemz1rDfV0b0/XuhkSEV2Dka/fi6GTH14s2FFl+1pxfaX5LFL173kZ4WADP9+tA9eggZs/7zVrm7jvr069PO5o0Lvq7tHnrUU6dTmT0Gw8SWS2QyGqBvPPmg+zcdZJ1Gw5el36WN5u+O0HNNoHUvC0QnxAX2jwVia2DkZ0riz+Bbco388OHu2lyfxU8Ai4fn5/ed4Eat1YgpKYXHv5OxNwehF+oK2cPFH2CT65en7p3M3vncr7YvYL9iSd4ccVEMvOyeahm2yLLNwyMZsPpPSzct4YTKedZfXwLC/f9Qt0KVQuVyzflcz4j2fpIzNK2E/kvKXdBf1tbW2bMmMHMmTPx9PTklltuYejQoWzfvr3Eev369aNr165ER0czefJkPDw8+PTTTwF49tlnadCgAbVq1SI0NJQHHniAzz777LKTCllZWcyaNYvatWvTokULJkyYwLx58zh79uafmZeTk8euXcdp0rTg8maj0UiTJlFs3XqkyDrbth6hSdOoQsua3VLdWt5kMrFm9U5CQ/3p/fgEbmk6mPvve5cVK7Zetq7vv/uTJo0HceedbzB2zCIyM0uecSB/Lzcnjz27T9GoScHBtdFopFHjqmzfdqwUWyb/xMnELOJTc2lS1dO6zM3JlphKbmw7VvSMq0vlm8ws2XqejJx8aivAL3LF8nJNnDxwgap1/azLjEYD1er4cWx3Ugk1LcxmM/u3xBN3Ip2wmgVpSUKre7Fr3TkuxGdiNps5uDWeuFNpVKvnV8La5FrIy83n6P5EatQvSAVpNBqoUa8CB0s4kfp/ZrOZXZvOcuZECpGx/tezqeXWydPJxCWk07RBqHWZm6sjMdWD2LrzVJF1cnLz2bXvDE0bFKSPMRoNNGlQha07T1qXZWbl8uLwbxn2Yjv8fFwvW88fG45gMps5F5dKxwem0PKu8Tz/ykLOnFMQ5Er9f0zRtGm0dZnRaKRpk2i2bD1cZJ2tWw8XM6YoXH7Dhv00aTqIdu2HM3zEXJKS0q59B8q5nNw8du05SdPGhccPTRtVY8u2o0XW2brtKE0aFQ4kNmsaxdZiyhf5vjl5GAwG7C+adOTgYIfRaGDT5qL/buTK5eeaOHcolcoxBcciBqOByjHenNlf/P5t3YIjOHnYUatN0SfSAiM9OPRnPKkJ2ZjNZo7vSCLpdAaVY0tOxSb/jJ3RltiACNYc32pdZsbML8e3Ur9iVJF1NpzeQ6x/OHUCLN/lyh4BtAmtz4ojGwuVq+IVyI4nZvJnr2lMbv8iQW46Fi0PjAbDTfkoj8pl8uWuXbtyxx138Ouvv7Ju3Tp++OEH3n33XaZNm0aPHj2KrNOkSRPrv21tbalfvz579uwBwMXFhSVLlnDo0CF+/vln1q1bx8CBAxk3bhxr167F2dkZgEqVKhEUFFRonSaTiX379hV5H4Hs7OzLThw4ODhgZ/9vP4FrLzkpjfx8Ez4+hXP6+fi6ceTIuSLrxMenXJZj0cfXjfh4y4FDQkIqGRnZTJv6I/2fu5OBL97Nb7/upv+zU5kx8zkaNrT8AHXq1IDAQG/8/T3Yt/8UY95fxJGj55gw4anr0NPyIyk5nfx8E96XDGp9fNw4euR8MbXkvyY+1ZJz0cet8I7D19WeuNSST47tP5POgx9tJTvPhLO9DRMeq05EgEuJdUSkQHpKDiaTGTdPh0LLXb3sOX+i+GBTZnourz+0grxcE0ajgXuerUnkRQH9Lk/XYMG4Hbz+8EqMNgYMRgP3PRdDeC2f69YXsUi9kI0p34yHl2Oh5e7ejpw+XnzgIyMth/5dvyEvJx+jjYHHXmhIrQYVr3dzy6W4BEs6Hh/vwr9Xvt4uxCcU/b1LSs4gP99cZJ0jxxKsz0d9+BN1agXRukXkpasA4MTpZMwmMx/P/IOhL7TFzdWRcR+vplf/uXw7+wns7Wz+TdfKhaQSxhSHjxQ9Ucoypri8/P/HFGBJ7dP29joEB/ly4kQcYz9YxBNPTmD+vJewsSl38+Cum6Sk9L+23yVjPB83DhczfoiPT718TOjjRnz8lU1OAagdUxknJ3ve++A7BvS/A7PZzJhxS8jPNxEXr5Nu/1Zmai5mkxlnz8LjCWcPexJPZRRZ59SeZHauPMOjYxoUu95WvauxYspepj75u+V4xgBt+0YRXKPo+x7J1fF2csfWaENcRnKh5eczkonwCi6yzsJ9a/Bxcuf7+9/BgAE7G1umb1vKh38usJbZfHYf/Zd/wMGkUwS4ePNi4wf57r53aD7rGdJzM69nl0TkCpXLoD+Ao6Mjbdu2pW3btrz22mv07t2b4cOHFxv0vxLh4eGEh4fTu3dvXnnlFapVq8b8+fPp2bPnVa1v1KhRjBw5stCy4cOHM2x486tu483EbDIDcNttMfTo0RqA6OgQtmw5zPx5v1mD/vfd38xap1pkEH5+HvTsMY7jx+OoVElnmqV8+W7zeUZ8XXBj68m9alz1ukL9nFj4Ql3SsvJYvj2eIfP3MatvjAL/IteZg5MtAye1IDsrjwNb4ln88W58KjgTEWu5Ueyv3x7l2N4keo1sgJe/E4d3JLBw4g7cfRyoVle/e/9Fjs52vPVpR7Iyc9m16RxzJ27CP9CV6DoBpd20m953y3cy/J2l1udT3r//urzPql/3s37TURbO7F1sGZPJTG6eiVcG3E6zRpY8/mNev5tmncaxftNRmjcOvy5tk793xx0FgcfIyCAiI4No0/Y1y+z/JkXPdJWbh7e3K+Pef4wRb37F53N/w2g0cEeHOtSIDsagG07ecDmZefwwfjdt+0bh5F78jMWtS09yZn8KnV+Owd3PkZO7k1k5dT8uXg6a7V/KmgbX4vmG9/HSqslsOrOPKp6BvHXrEwxo9ABj188DYOXRTdbyu+OPsunsPrY8/hl3V2vGnF0/lVbTReQi5Tbof6nq1atfdvPei61bt44WLVoAkJeXx6ZNm+jXr1+x5UNDQ3F2diY9veDmX8ePH+f06dMEBgZa12k0GomMLHq20JAhQxgwYEChZQ4ODsBvRZYvTZ5ertjYGC+7wVZCfCq+vu5F1vH1dSf+khs6XVze08sVW1sj4RGFZ8KFhVdg86ai8+YCxMSEAnD8mIL+/4aXpws2NkYSL5kVl5CQik8x21RK323VvYmpVNf6PCfPcvOyhNQc/C866I5PyyE68PLUBBeztzVS2deSf7NGsBs7TqTx+a+nGXlv1RLriYiFi7s9RqPhspv2piXl4OblUEwtS1oR3yDLybWgcA/OnUhj5fxDRMT6kpudzw8z9tJjWH2qN7IEjAPD3Dl1OIXVXx1W0P86c/NwwGhjuOymvSmJWXh6F38/IaPRQECwZSZr5arenD52ge9m71LQ/xpo1awqMdULAvE5ufkAJCSm4+9bMHs4PjGd6GpFf95ens7Y2Bguu2lvfGI6vj6W7+K6jUc5fiqJhrcXvll6/6FfUy82hM8nPYqfr+V3NaKKr/V1by8XvDycleLnCnld9ZjiyssDhIT44eXlyrFj5xX0v4a8vFz+2n6XjPESUvH1LTpFpK+v2+VjwhLKF6dZ00hWLH2FxKQ0bG1scHd34pZWw+kYrODxv+XkZofBaCAjufBVwhkXcnDxvDyon3w2k5TzWSwaVZBC2Wy2TOj7oNvP9JzQCBcvB36be4i7BtcirJ5ln+kX6krc0VQ2Lj6uoP81lJiZQp4pHz9nz0LL/Z09OZ9RdLrJIU0f4cs9q5i980cA9iQcw9nOgTFt+vHB+vmYMV9WJyU7nUNJp6jiqfuiiPxXlLvT3gkJCdx2223Mnj2b7du3c+TIERYsWMC7775L586di603ceJEvvnmG/bu3cszzzxDUlISvXr1AmDEiBEMHjyY1atXc+TIEbZs2UKvXr3Izc2lbduCG6M4Ojry2GOPsW3bNn799Vf69+/PfffdV2RqH7AE+N3d3Qs9LEH//x57e1tq1KjEurUFN0gzmUysW7eP2rWrFFkntnYV1q3dW2jZH3/ssZa3t7elZs3Kl6UHOnr0PIGBxR8E7N1ryb3q56/A9L9hZ29LdPUg1q8rmDVuMpnYsP4gMbGVS7FlUhIXR1sq+zpZHxEBzvi62bHuYLK1TFpWHtuPp/7jG/CazWbrSQQR+Xu2dkaCq3pwYEtBrneTycyBrfFUrn7ll66bTZD/VyAzP89Efp4Zg7FwXkqj0WAdUMv1Y2tnQ2g1b3ZvKkgzYjKZ2bX5LBE1fEuoWZjZbCb3r20q/46riwOVQ7ytj4gqvvj5uLB241FrmbT0bLbvPkXtmkFFrsPezoYakRUL1TGZzKzbeJTaNS2pD57o3pRvP3+Cb2b2tj4AXn6uLaNevROAujGWshenBEq+kEnShQwCK3hcy26XWf8fU6y9aIxgMplYu24vdWqHFVmndu2wYsYURZcHOHs2ieTkdPz8tV2uJXs7W2pEB7N2feHxw9r1B6gTG1pkndqxoay7qDzAH+v2U7uY8n/H28sVd3cn1q4/QEJiGrfdWvOq1iMFbOyMBIS7cXxHQYDYbDJzfHsSFatdPub2DnKm+wcNeXRMA+sjvL4vITW9eHRMA9x8HDHlmzHlmTFckmfbYDSAjmeuqVxTHtvOHaRFSKx1mQEDzUNi2Xhmb5F1nGwdMF2yHfLNlnHgpdvs/1zsHAn1rMi59MRr1HL5ryrt3PzK6X/lyt1Mf1dXVxo1asQHH3zAoUOHyM3NJSQkhCeeeIKhQ4cWW2/06NGMHj2arVu3EhERweLFi/H1tQzuWrZsycSJE+nevTvnzp3Dy8uLOnXq8OOPPxaaxR8REcE999xDx44dSUxMpFOnTkyaNOm69/lGeazHbQx5eRY1a1amVkxlZs38mczMbLrcY7kfwksvzSDA35MBA+8GoPujreje/QOmf7aClrfWZOmSjezadZyRrz9sXWevx9sycMCn1K8fQaNG1fjt192s/nkHM2c9D8Dx43F8//2ftGxRE09PF/btP8XoUV9Rv34EkZFF56eTK/fIYy0ZNnQe1WsEU7NWJeZ+/iuZmTl07mK5RPrVIV/g7+9B/xc6Apab/x4+ZDlJk5ubz/nzF9i35xROzg5Uqmz5vmSkZ3PieEEA7NTJRPbtOYW7hzMVA5W/8VozGAx0bx7ElJUnqOzrRLC3I+OXH8Pf3YE2FwWoen68nTY1fXn4FsvMjLFLj9A8yptATwfSs/P5fst5Nhy+wNTeBQOnuJQc4lNzOBZvmfG6/0w6Lg42VPRywNPZ7sZ2VHBxcCLCr2C/V8UnkNjgqiSmp3Aiqeh7q8j11+KeMOa9v5WQah5UivTkl2+OkJOVT8PbQwCY++4WPHwduaOX5aaVK+cdJLiqB76BzuTlmtiz4TybVp6k67O1AHB0sSM8xpvvp+7Bzt6IV4Azh7YnsHHFSTo/Wb3U+lmedLgvik9GraVKpA9h0T4sX7CX7Mx8WnS0BBinvPUHXr5O3P9UHQAWz95JlUgfAoJcyc0xsW3daX5ffoQeAxuWZjfKLIPBQPf7GzJlxu+EhngTVNGT8VPX4O/rRpuLcvH36DeHNi2r8Ug3yzFNjwcb8fIbi6kZVZGYGoHMnLeBzKxc7ukUA4Cfj2uRN+8NDHAnONATgCqVfGjdohpvf/gTI1/qiKuLPWMn/0xYZR8a1dOEiSvVs0cbXnp5BjVrViYmJpSZM1eRmZnDPfc0BWDwS9MJ8Pdk4MAuAHR/9DYe7T6Gzz77iZa31mLpkj/ZuesYr/81pkhPz+KjiUtod3sdfH3dOXEinvfeW0jlSn40b1aw3zx9OpELF9I5fSaJ/HwTe/acAKBSJT9cXByRK9Oze0teevULalYPIaZWJWbOXmPZfndb9nmDh84lIMCdgc91AqD7w815tNdEPpu5mpYtoln6wxZ27jrB68O6WdeZfCGdM2eSOR93AYAjRy33B/D1dcPvrys6vl60gfAq/nh7u7Jl21HefmcRPR5tQVgV3TT9Wqh3ZwjLJuwhINyNClXd2fz9CXKz86lxm2Xs8MP43bh6O9D8kXBs7W3wrVR4f+ngYgk9/X+5jZ2R4Bqe/DLrILb2Rkt6n13J7F5zllsfi7ixnSsHpmxexIR2L7D1/AE2n93PU3U642znyBe7VgDwUbsBnE1L4M3fZwKw/PAG+ta9mx3nD7P57D6qeFZkSNNH+PHwBkx/Bf9HNO/Fj4c3cCL1PBVcvBnc5GHyTSYW7ltTav0UkcLKXdDfwcGBUaNGMWrUqGLLXDxTLjQ01Pr8wQcfLLJ8q1ataNWq1RW9f9++fenbt+8/aPHNo2PH+iQlpjF+wvfEx6UQHR3MJ1P7WS+tPXM6CeNFORXr1A3nvfd7Me7DxXzwwWIqh/ox4aOnqFat4HKwtm1rM3zEg3zyyXLefmsBVaoEMG78E9SrZzkQsLOzYe0fe60nGCpU9KLt7bXp27fDje18GdWuQ22SEtOY/NFyEuJTiYwKZOLHvfH563Lbs2eSCp0xjYtL4YF7P7A+nzV9DbOmr6FegzCmzXgagN27TvBEzynWMmPeXQzAnZ3r8/rbD9yIbpU7vW8NJjMnn+FfHSAlK4+6oR580rsGDnYF38fjCVkkpedanyek5fLyvH3EpeTg5mhLtYouTO1dk1uqFZyYmb/uDBN/Om59/uhkyyW8b99XjS4NlLLiRqtfKZrVAwpOJH/Q7XkAZqxdQs9Zb5RSq6TOrYGkX8hm+az9pCRlExTmzhNvNbSm90mOyyw0az8nK4+FH+0gOT4LO3sb/ENceWhwHercWvDb+MiQuiz9bC9z3tlCRmouXv5OdOwRRZNOCireCI1bh5KanM3Xn23jQmIWlSK8GPR+Kzz+Su+TcC690Cy47Mw8Zo79k8S4DOwdbKhYyZ0+rzalcevQUupB2df7kSZkZuYybPRSUtKyqBcTwtQPHsDBoWDoc/xUEkkXCm402LFNdRKT0pkwbQ1xCelEVw1g6gcP4Otdciq8S70z7C5GffgTfV6cj8FgoGGdSkz94EHsbHUT3yvVsWN9EhNTGT/hO+L+GlNMm/rsRWOKxELHn3XrhvP++4/z4YeLGfvBt4SG+jPxoz5Uq2a5ssPGxsj+fadYtGgdqakZ+Pt5cMst1Xnuubuwty+YpDB+/GK+WbTO+vzuLm8BMGvmCzRqVHQ6Vrlcx/Z1SExKY/ykZcTFpxAdGcS0yU9ab9Z75mwSxot+9+rWrsL7ox/hwwk/MHb8EkIr+TFxXE+qVS1I8bpq9S6GvDbP+vyFwZ8D0K/P7Tz7dHvAciJg7LglXLiQQVCQN32eaEOPR1veiC6XC5G3BJBxIZc/5h0mIzkHvypu3PNqrDW9T2p8Fv90Iu0dL9TgtzmHWDpuF1lpebj7OtLswTBi2hV9VZZcvUX7f8XHyYOXmjyCv7MXO+MOc/83w6w39w1288NsLriie+z6eZgxM/SWR6jg6kNCxgV+PLyBt/743Fom0M2XjzsOwsvRnYTMC6w/vZsO8waSkKl0diL/FQazrgW/IUaMGMGiRYvYunXrv16Xybzy3zdISoXRYLkhcUbed6XcErlazraWS/hNi4u/kZ/8dxnvmgaAoW/jUm6JXC3zZEtA5vujA0u5JXK1OoWOAWDDuddLuSVyNRoGDAPAnDirlFsiV8vg3d3yD/PPpdsQuXqGvyacZS8p3XbI1XO4A4CPd5bNCYFl3VM1JwPg90GnUm6JXK24F74v7SbctG7Wcdj/xyDlSbnL6S8iIiIiIiIiIiIiUlYp6H+DjBgx4prM8hcRERERERERERERKY6C/iIiIiIiIiIiIiIiZUS5u5GviIiIiIiIiIiIiPwzRs0fv2loS4mIiIiIiIiIiIiIlBEK+ouIiIiIiIiIiIiIlBEK+ouIiIiIiIiIiIiIlBHK6S8iIiIiIiIiIiIiJTIaDKXdBLlCmukvIiIiIiIiIiIiIlJGKOgvIiIiIiIiIiIiIlJGKL2PiIiIiIiIiIiIiJRI6X1uHprpLyIiIiIiIiIiIiJSRijoLyIiIiIiIiIiIiJSRijoLyIiIiIiIiIiIiJSRiinv4iIiIiIiIiIiIiUyGjQ/PGbhbaUiIiIiIiIiIiIiEgZoaC/iIiIiIiIiIiIiEgZoaC/iIiIiIiIiIiIiEgZoZz+IiIiIiIiIiIiIlIio8FQ2k2QK6SZ/iIiIiIiIiIiIiIiZYSC/iIiIiIiIiIiIiIiZYTS+4iIiIiIiIiIiIhIiZTe5+ahmf4iIiIiIiIiIiIiImWEgv4iIiIiIiIiIiIiImWEgv4iIiIiIiIiIiIiImWEcvqLiIiIiIiIiIiISImU0//moZn+IiIiIiIiIiIiIiJlhIL+IiIiIiIiIiIiIiJlhNL7iIiIiIiIiIiIiEiJjAbNH79ZaEuJiIiIiIiIiIiIiJQRCvqLiIiIiIiIiIiIiJQRCvqLiIiIiIiIiIiIiJQRyukvIiIiIiIiIiIiIiUyYijtJsgV0kx/EREREREREREREZEyQkF/EREREREREREREZEywmA2m82l3QgRERERERERERER+e/648zw0m7CVWlacWRpN+GGU05/ERERERERERERESmR0aCc/jcLBf1vRrk/lHYL5GrZdQBgb9J7pdwQuVpRXoMAMG+7Oc9ul3eGWMvZ/e+PDizllsjV6hQ6BgBD38al3BK5WubJ6wD47cywUm6JXI1mFV+3/CPt69JtiFw9166W/2sb3rz+vw2zvivddsjVc7wTgBUnhpRyQ+RqtAkZBUDglC6l3BK5Wqf7fFPaTRC57pTTX0RERERERERERESkjNBMfxEREREREREREREpkdGg+eM3C20pEREREREREREREZEyQkF/EREREREREREREZEyQkF/EREREREREREREZEyQjn9RURERERERERERKRERoOhtJsgV0gz/UVEREREREREREREyggF/UVEREREREREREREygil9xERERERERERERGREim9z81DM/1FRERERERERERERMoIBf1FRERERERERERERMoIBf1FRERERERERERERMoI5fQXERERERERERERkRIZDZo/frPQlhIRERERERERERERKSMU9BcRERERERERERERKSMU9BcRERERERERERERKSOU019ERERERERERERESmQ0GEq7CXKFNNNfRERERERERERERKSMUNBfRERERERERERERKSMUHofERERERERERERESmREaX3uVlopr+IiIiIiIiIiIiISBmhoL+IiIiIiIiIiIiISBmhoL+IiIiIiIiIiIiISBmhnP4iIiIiIiIiIiIiUiKjQTn9bxaa6S8iIiIiIiIiIiIiUkYo6C8iIiIiIiIiIiIiUkYo6C8iIiIiIiIiIiIiJTIajDfl45+aOHEioaGh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0m2IXD3Xrpb/axvevP6/DbO+K912yNVztFz9vuLEkFJuiFyNNiGjAAic0qWUWyJX63Sfb0q7CTeto6kflXYTrkqoW7/SbsINp9MzIiIiIiIiIiIiIiJlhIL+IiIiIiIiIiIiIiJlhHL6i4iIiIiIiIiIiEiJDJo/ftPQlhIRERERERERERERKSMU9BcRERERERERERERKSMU9BcRERERERERERERKSOU019ERERERERERERESmQ0aP74zUJbSkRERERERERERESkjFDQX0RERERERERERESkjFB6HxEREREREREREREpkUHzx28a2lIiIiIiIiIiIiIiImWEgv4iIiIiIiIiIiIiImWEgv4iIiIiIiIiIiIiImWEcvqLiIiIiIiIiIiISImMBs0fv1loS4mIiIiIiIiIiIiIlBEK+ouIiIiIiIiIiIiIlBEK+ouIiIiIiIiIiIiIlBHK6S8iIiIiIiIiIiIiJTIop/9NQ1tKRERERERERERERKSMUNBfRERERERERERERKSMUHofERERERERERERESmRUfPHbxraUiIiIiIiIiIiIiIiZYSC/iIiIiIiIiIiIiIiZYSC/iIiIiIiIiIiIiIiZYRy+ouIiIiIiIiIiIhIiQwGzR+/WWhLiYiIiIiIiIiIiIiUEQr6i4iIiIiIiIiIiIiUEUrvIyIiIiIiIiIiIiIlMiq9z01DW0pEREREREREREREpIxQ0F9EREREREREREREpIxQ0F9EREREREREREREpIxQTn8RERERERERERERKZEBm9JuglwhzfQXERERERERERERESkjFPQXERERERERERERESkjFPQXERERERERERERESkjDGaz2VzajRARERERERERERGR/66k7Pml3YSr4uVwf2k34YbTTH8RERERERERERERkTLCtrQbIP/ctupRpd0EuUqxu/cCsDNhdCm3RK5WTZ+XAUjP/baUWyJXw8WuMwAbzr1eyi2Rq9UwYBgAv50ZVsotkavVrKLl+2fo27iUWyJXwzx5HaD96M3s//tR89kppdwSuVqGCn0AMP02sJRbIlfL2GwMALmm5aXcErkadsZ2ACw9OqiUWyJXq2Poe6XdBJHrTkF/ERERERERERERESmRQUljbhraUiIiIiIiIiIiIiIiZYSC/iIiIiIiIiIiIiIiZYSC/iIiIiIiIiIiIiIiZYRy+ouIiIiIiIiIiIhIiYwGzR+/WWhLiYiIiIiIiIiIiIiUEQr6i4iIiIiIiIiIiIiUEUrvIyIiIiIiIiIiIiIlMii9z01DW0pEREREREREREREpIxQ0F9EREREREREREREpIxQ0F9EREREREREREREpIxQTn8RERERERERERERKZFR88dvGtpSIiIiIiIiIiIiIiJlhIL+IiIiIiIiIiIiIiJlhIL+IiIiIiIiIiIiIiJlhHL6i4iIiIiIiIiIiEiJDAbNH79ZaEuJiIiIiIiIiIiIiJQRCvqLiIiIiIiIiIiIiJQRSu8jIiIiIiIiIiIiIiUyKr3PTUNbSkRERERERERERESkjFDQX0RERERERERERESkjFDQX0RERERERERERESkjFBOfxEREREREREREREpkUHzx28a2lIiIiIiIiIiIiIiImWEgv4iIiIiIiIiIiIiImWE0vuIiIiIiIiIiIiISImMBs0fv1loS4mIiIiIiIiIiIiIlBEK+ouIiIiIiIiIiIiIlBEK+ouIiIiIiIiIiIiIlBHK6S8iIiIiIiIiIiIiJTJo/vhNQ1tKRERERERERERERKSMUNBfRERERERERERERKSMUNBfRERERERERERERKSMUE5/ERERERERERERESmR0aD54zcLbSkRERERERERERERkTJCM/2L0aNHD2bOnHnZ8gMHDhAREVEKLbp5BfR7Fp9u3bBxcyd9y2ZOvj6SnGPHii0f/dNK7IOCLlseP3cOp958AxsPDyr0exbXprdgX7EieUmJXFi5krPjx2FKS7ueXSmXfvh6D9/O2UlyYiahEV48PqAxVav7FVn2p2/3sWbZIY4fTgIgLNKHh/vUu6z8yaPJfD5pI7u3nCU/30xwqCeD3m6FXwXX696f8mb+F38wa/oaEuJTqRZZkcFDO1OzVqUiyx46eJbJH/3Int2nOHM6iYEv3cnDjzYvVGbTxsPMmr6GPbtPEh+Xyphx3WnVuuaN6Ipc5KeF+1g6bw8XEjMJCfei+3P1Ca/uW2TZP9cc57vZuzh3KpW8PBMVgt3pcH8UzdqF3eBWl1+rvjnAsnl7uZCYRUiEJw/1r0tYtE+RZTf9cpIls3dz/lQa+fkmAoLcuP3+SJreHmot8+30nWxYdZzEuAxsbY1UrubNPb1rEVa96HXKjdE8ojaD2j5CvUqRBHr6cfeUwXy77ZfSbpZw7feZf645zqpvD3B0fyJpKTm8+WkHKlf1vlHdKRfMZjMTPlvLgu93kJKWTd1agQwf0JrQYK8S6835ZiufzttEfGI6UeF+vPpcK2KiK1hfj0tI573Jv/DHpuOkZ+RQJcSbpx5tSLuWVa1ljpxI4r3Jv7B552lyc01EhvvSv1dTGtcNuW79LQ/MZjMTvt3Pgl+Ok5qRS50Ib4Y/WpPQgOKP/z9ZcpCfNp/h8Jk0HO1tqBPuxcBu0VQpYsxgNpt56sMN/LozjgnP1KdN3QpFrFGu1BdzfmH6Z6uIj08hMiqIoa/cS62YysWWX75sCx+NX8KpU4lUruzHCwPvokXLGtbXM9Kz+WDsYlat3E5ycgZBwd48/EhL7n+gWaH1bN1yhPHjvmfH9mMYjQaiooL5eFpfHB3tr1tfy4vfFh9h1VcHSU3MJjDMnXuerkXlqKL3qdt/O81P8w4QfzodU54Z3yAXbu0aToM2BfvB7Mw8vv90NzvWniUjJQfvCs407xzGLZ1Cb1CPROTvaKZ/Cdq3b8+ZM2cKPapUqfKP1pGfn4/JZLpOLfzv83u8N36PPMrJkSM48MB9mDIzCftkGgb74n+09993L7taNLM+Dj3eE4Dk5csBsPPzx9bPnzPvvcu+zndyYugQ3Js1J+SNt25In8qT31ccZsb4DdzXqzbvTb+LyhHevPHCj1xIzCyy/K4tZ2nWpgojJ7Tn7Y/vwNffhdef/5GEuHRrmbMnU3ilz1KCKnsw8qMOjJ3VmW49Y7G3t7lR3So3lv+wlbHvfseTfdswd8FzVI2syDNPfUpiQtEnx7IycwkK9qb/8x3w9XUrpkwO1SIr8vIrXa5n06UE61YeZe7EzXTpUYs3pnWkUoQX7774MxeSsoos7+ruwF2P1mTYpHa8Pf0OWnQIY+rodWzfcPoGt7x82rDqOPMnbeWuHjUYPvV2QsI9+WDQGlKK2V4ubvZ0erQ6Qye1YeSn7bmlQxWmj97Azg1nrGUCQtx4+Lm6vP5Ze16e0BrfCs6MHbSG1OSi1yk3houDE9tOHeCZee+XdlPkItdjn5mdlUe1GH/u71PnRnWj3Jn2xUY+X7iVEQPb8OWUB3FytKP3iwvJzs4rts7SVfsYPfEXnnmsMQunPkxkuC+9X1xIQlKGtcxLby/jyIkkJr3dmcXTH6VtiwheGLGE3fvPW8v0eXkR+flmZn5wL19PfYiocD/6DllEXEJ6UW8rV2jaD4eYveIIIx6txfxXmuHsYMMTYzeQnZtfbJ0/9yfwUKtQ5r3SjE8HNiY338zjY9aTUcTfwcyfjoDhevag/Phh6Wbefecb+j7TngVfDyIyMoinnphEQkJqkeW3bDnM4Bdn0qVrExYsHMxtrWPo/+w0Duwv2G+++843/PbbHka9253FS4byaPdbefvNr/h51Q5rma1bjtDnyck0vSWKL+YPZN6CF3nw4eYYjdqw/9aW1adY9Mku2j0cycCJLQkM8+DjV9aRmpxdZHlnN3vaPliN5z9szqApt9Lw9krMG7OVvRsL9pWLPt7F3o3neWRwXV6eehstuoSxcOIOdq49e6O6JaXEYDDelI/yqHz2+go5ODhQoUKFQo9x48ZRq1YtXFxcCAkJ4emnnybtotnlM2bMwNPTk8WLF1O9enUcHBw4fvw42dnZvPjiiwQFBeHi4kKjRo1YvXp16XXuBvHr3p1zH08hZdUqsvbv5/jLL2Hn749H6zbF1slPSiIvPt76cG95K9nHj5H+5wYAsg4e4Njz/UlZ/TM5J06Qtn49Z8Z9gHurVmCjwPG19N28XbS5qxq3dapKSBVPnhrcFAcHW1Z+f6DI8s+PaEn7rtFUqeZDcKgnfYfcgtlkZsfGgmDV3I83U7dJMN2faUBYpA8Vgt1p0LwSHt5ON6pb5cacWb/S5d5GdO7SgLDwAF4Zdg+OjnZ8+82fRZavUSuEF17sRLuOtbGzL/pCsFuaR/FM//bc1kaz+0vLD1/u5dZOEbToGE5QqAc9BzbEwdGGX5YcKrJ8dJ0A6rcIISjUg4AgN9p1iyIkzJP92+NucMvLpx8X7KPFHWE06xBGYKgHjw6oj72jLb8tPVJk+ag6/tRtHkxgZXf8g1xpe281gsM9OLAj3lqmcZvKVK9fAb9AV4KqeHD/M3XITM/lxKELN6pbUoRlu9by2uKPWbRtTWk3RS5yPfaZzdqF0aVHLWrU00zi68FsNjNrwWb6PNqQ1s3CiQz3452h7TmfkM6K34rebgAzvtxMt0416dqxBhGhPowc2AZHR1u+XrrTWmbrrjM8ck9tYqIrEBLoSd/ujXBzdWDX/nMAJCVncuxkMk88VJ/IcD9Cg70Y8FQzMrPyOHAkvri3lr9hNpuZteIIfTpVpXWdCkSGuDP68dqcT85ixebiA4RTX2hEl2YhVA1yIyrEnVGPx3ImMZNdRwv/3u05foEZPx7mrZ6x17sr5cKsmT9zb7emdLmnMeERFRk24j4cHe35ZuG6IsvPnrWGW5pF0+vx1oSHV+DZ5+6genQwc+f+ai2zdcsROnduSMOGVQkK8qHbfbcQGRnIju0FGQDeHb2Qhx9pSe8n2hJRtSJVqgTQvkNd7O3trnufy7rVCw/RpH0lGrWrRIXKbnTrH4O9gw3rlx8vsnxErC8xt1QkoJIbvoEutOwSRsUwdw7vSrSWObo7kQZtQ4iI9cW7gjNNO4YSGObO8X1JN6pbIvI3FPT/h4xGI+PHj2fXrl3MnDmTVatWMXjw4EJlMjIyeOedd5g2bRq7du3C39+ffv36sXbtWubNm8f27dvp1q0b7du358CBooOnZYF9cDB2fv6krv3DusyUlkbG9u041659Resw2NnhdeddJC5cWGI5G1c3S2qf/OJnisg/k5ubz6F9CcTUD7QuMxoNxDSoyP6d50uoWSAnK5/8PBOu7g4AmExmNq09QWAld15/fjk9O37By72/Y/2a4tM9ydXJzc1jz+5TNGpckI7MaDTSqHFVtm/T532zysvN5+j+RGrULwg0GY0GatSrwMFdfx+MMJvN7Np0ljMnUoiM9b+eTRUs2+vYviSi6wVYlxmNBqrXC+DQ7ivbXrs3nePsiVSqxRadVi0vN5813x3CycWOkHDPa9V0kTJB+8yb08kzF4hLzKBpvYJ0hG6uDsREV2DrrqKvUsvJzWfX/nOF6hiNBprUq8TWXQWTT2rXqMjSn/eTnJKFyWRmycp95OTk0bC2JWWFp4cjVSp58e3yPWRk5pKXZ2L+4u34eDlTIzLgsveVK3MyPoP4C9k0uSitlpuzHTFhnmw7dOUBwtQMywx/D5eCIHBmdj6DPtnCaw/XxM/D8do1upzKzclj964TNG4SaV1mNBpp3CSSbVuLnrCwbdtRmjSpVmhZ02bRhcrXrlOFn3/eyblzyZjNZjas38/Ro3E0vSUKgISEVLZvP4a3jysPPziWFs1eocej49i8qfgTfXJl8nJNnDxwgWp1C44ljUYDVev4cmz333//zGYz+7fEEXcijfCaBansQqt7s3PdOZLjMzGbzRzYGk/cqTQi6+n3UuS/Qjn9S/D999/j6lqQL7BDhw4sWLDA+jw0NJQ333yTPn36MGnSJOvy3NxcJk2aRGysZabB8ePHmT59OsePHycw0BJAffHFF1m2bBnTp0/n7bffLvL9s7Ozyc4ufLmVg4PDNevf9Wbra/lRyYtPKLQ8LyEeO9+i86heyr11a2zc3Ej85ptiy9h4ehLQty8JC768+sbKZVKTszHlm/G8ZAa+h7cTp45d2WzSzydtxMvXmZj6FQG4kJRJVkYe33y+gwefrMujT9dny7pTvDd0FSM/6kCNOpoxd60kJ6WTn2/C26dwmh5vH1eOHrmykzby35N6wfK99PAqPKh193bk9PGUYutlpOXQv+s35OXkY7Qx8NgLDanVoOL1bm65l3ohB5PJjLv3JdvLy5Ezf7O9Xrz3O/Jy8zEYDTzyQr1CQUuAbX+c5uPX15KTnYeHjxMDx7TEzfPmOUYQuRG0z7w5xSVa0vH4eDsXWu7r5Ux8YkZRVUi6kEl+vhkfr8vrHDleENT6cMQdvDByKY3vnIytjRFHR1smvHkXlYM9ATAYDEwf05VnXl1MvQ4fYTQa8PZ0Zuq7XfBwU0D5asVfsIxpfdwL/075ujsQl1J0epFLmUxmRs3bRd0IL6oFu1uXj56/i9oRXrTWOOKaSEq2jCF8LhlD+Pi4ceTIuSLrxMen4OPrXmiZr48b8fEF6YCGvtqVEcPm0/rWYdjaGjEYDIx4/UHqN7BMUDp5wnIidtJHP/Di4LuJigpi8bd/8njPj1i0eAiVQxVIvlrpKZbj0UuPE928HDh/ovh7Imam5zLioR/JyzVhNBq499mYQgH9rk/XZP64bYx8+CeMNgYMRgP3PxdLeC3dY0rkv0JB/xK0atWKyZMnW5+7uLiwYsUKRo0axd69e0lJSSEvL4+srCwyMjJwdrYcZNrb2xMTE2Ott2PHDvLz86lWrfDZ7+zsbHx8it8hjho1ipEjRxZaNnz4cP6rmbQ9O3UieERBe4/06fOv1+lzz72k/PoreXFFBymNLi5UmfIxWYcOcXbiR//6/eTaWThrO7+vOMzIiR2wd7Dsasx/3d6iQfNK3PmA5cZOVar5sG/neZZ/s1dBf5HrxNHZjrc+7UhWZi67Np1j7sRN+Ae6El1Hsxb/ixyd7Rg+7XayM/PYs/kc8yduxa+iK1F1CgZaUXX8GT7tdtIuZPPLksNMGbGWVya3wd1LQSmRf0v7zBvru5/2MHzMSuvzKaPvvm7vNe7TtaSmZTN9bFe8PJxY8dtBXhixhNnj7yMy3Bez2czrH67Cx9OZORPuw8HBlq++30nfod+y4OMH8fcp/qazUuC7dScZMasgV/vk5xr+63W+PmcnB06lMuflptZlq7aeZd2eeBYOb/Gv1y/X15zZv7B921E+mvQEFQO92bTxEG+9sQB/fw+aNI3EZDYD0O3+W+hyT2MAoquHsG7dfhYuXMcLA+4qzeaXSw5Otrw4qSU5Wfns3xLHoo934lPBmYhYywTOX789wrG9STw+siHe/k4c2pHI1xO34+7jSGTdoq9QlbLBYC7tFlylcnh7EAX9S+Di4kJEREFqjKNHj9KpUyf69u3LW2+9hbe3N7/99huPP/44OTk51qC/k5MTBkPBX1NaWho2NjZs2rQJm0tyzl98JcGlhgwZwoABAwotc3BwYO+X865F9665lFU/s3/7duvz/9+s19bXh7z4gjyotj6+ZO7d87frswsMxLVJE44+92yRrxudXQj7ZBqm9HSOPtsP8oq/sZf8c26eDhhtDCRfctPeC4mZl83+v9S3c3fwzewdDB/XjtCIgksA3TwdsLExEBLqUah8cGUP9mzX7PNrydPLBRsbI4mX3HArMSENn2Ju0iv/fW4elu/lpTegTEnMKvF7aTQaCAi2bPfKVb05fewC383epQDWdebmYY/RaCAl8ZLtlZSFh3fxwfmLt1elql6cOZbC0rl7CgX9HZxsCQh2IyDYjfAavgx5eAm/Lj3MHQ9Xvz6dEbkJaZ95c2h1Szgx0QVXUuTkWo7pExIzCgXZ45MyiI4oOpDk5eGEjY2h0E17/1/H968rBo6fSmbON1v5bsajVK1iCVpFRfixafsp5i7aysiBbVi3+QSr1x5hw/d9cXWxzIqtMSCAPzYeZ9Gy3Tz58L8PXpcHt8VWIGa4l/V5Tp5l5k9CSjb+ngW/f/Ep2USHuF9W/1JvzNnBmm3n+PylplS46Lu7bk8CJ+IyaPTs8kLln5u0kXrVvJk1uOmlq5K/4eVpGUNcetPehIRUfIsZQ/j6upMQX/jqqfiLymdl5TDuw+8ZN743LW+1TPyKjAxi756TzJi+kiZNI/Hzs4wPw8MLTwILCwvg7BnliP83XNwtx6OX3rQ3NSm7xMkiRqMBvyDLPjgo3INzJ9JYMf8AEbG+5GTns2TGHnoOa0iNRpbfxsAwD04dvsDqrw4q6C/yH6Gc/v/Apk2bMJlMjBkzhsaNG1OtWjVOny46r+TF6tSpQ35+PufPnyciIqLQo0KF4mc2Ozg44O7uXujxX07vY8pIJ+f4cesj++BBcuPO49a4ibWM0cUF55gYMrZu/dv1eXe5h7zEBFLWXH5DPKOLC2HTPsWcm8uRZ57GnJNzLbsigJ2dDeGRPuzYVJAH1WQys33jGarVLP7yykWzd/DV9G28NrYtEdGF0zjZ2dkQEe3LqUsuqT99IgW/Cpo5dS3Z2dkSXT2IDesPWpeZTCY2rD9ITGzlUmyZ/Bu2djaEVvNm96aCm96ZTGZ2bT5LRI0rS5sGltycubm6B8r1ZmtnQ+VIL/ZsLrgc3mQys2fTOcKrX/n2MpkhL6fk7WU2m8nLMV11W0XKIu0zbw6uzvZUDva0PiJCffDzdmbt5hPWMmnp2Wzfc5baNQKLXIe9nQ01qgWwdlNBHZPJzLrNJ6hdw3JCITPLcjLBaCg81c9oNGIymf8qkwtQaAIXgMFowKRd7BVzcbKlcoCL9RER6IqvhwPr9hTcSyMtM5fth5OJDfcqdj1ms5k35uxgxeazTB/UmGC/wumbnugYzqIRLVg4vLn1AfDyAzV4u2ft69K3ss7O3pbqNUJYv26/dZnJZGL9un3E1q5SZJ3Y2FDWXVQeYO0fe63l8/LyycvNx2gs/L2ysSn47gUFeePv73FZGtJjx85TMdAbuXq2dkaCq3qwf0vB989ksuTgr1y9+O/fpcwmM3m5lh2hKc9Efp4Z4yURRaPRgOlmnQUuUgZppv8/EBERQW5uLhMmTODOO+/k999/Z8qUKX9br1q1ajz88MN0796dMWPGUKdOHeLi4li5ciUxMTHccccdN6D1pSNu1iz8n+pD9rGj5Jw8RYX+/ck9f54LK1dYy4R9Np0LK1aQMHdOQUWDAe8uXUhatOiym/P+P+BvdHTi6EuDsHF1hb+umMhLTERH5NfOnQ/UYMKbvxEe5UPV6n58P38X2Vl53NapKgDjX/8Fbz9nHulbH4BvPt/OvGlbeH5ES/wqupKUYJlt5ehkh5Oz5YZbnR+uxdjXVlO9dgA161Vky7qTbPz9BK9/1KF0OlmGPdy9OcNf+ZLqNYKpUTOEubN/IzMzh7vutmyv14bMw9/fg2dfsHz2ubl5HD503vrv8+cusG/vaZyc7alUyRIcycjI5sTxgvt0nDqVyL69p3H3cKJixSs/aJSr1+G+KD4ZtZYqkT6ERfuwfMFesjPzadExDIApb/2Bl68T9z9VB4DFs3dSJdKHgCBXcnNMbFt3mt+XH6HHQM1WvBFu7xbJp6PWExrpTZVoH1Z8tY/srDxu6WAZCE97ex1evs50fdKSFnDJnN2ERnrjH+hKbq6JHetOs+7HozzyQj0AsjPz+H72bmo3DcTDx4m0C9msWnSQpLhM6t8aUmr9FHBxcCLCL9j6vIpPILHBVUlMT+FEUtF5kOX6ux77zLSUbBLOpZMUb7ka8v/36PDwdsLTp+SrIeXvGQwGunery5RZ6wkN9iSoggfjP/sDfx8X2jQLt5br8cJXtGkewSP31LY8v68uL49aTs0of2KiKjDzqy1kZuZyTwfLzOKwyl5UDvJk+JiVDH66BZ7ujqz47RB/bDxmTSlUp0Yg7m4OvDxqOc881hgHB1sWfL+DU2cucGuTogOe8vcMBgPd21RhyvcHqRzgQrCvM+O/2Ye/pyNt6hZMguv53lra1K3Aw60tn/Xrs3eyZP0pPnq2AS6OtsRdsFy14+Zkh6O9DX4ejkXevLeit9NlJwjkynV/rBWvDJlNjZoh1KxVmdmzVpOZmcPdXRoBMOSlz/EP8LCm3Hmke0t6dh/PjOmraNGyBj8s3cSuXScYMfIBAFxdnajfIIIx732Lg6MdgYHebPzzIIu//ZNBL90NWP5Geva6jYkf/UBkVCBRUcF8u2gDRw6fZ+yHvUrlcyhLbr0nnLnvbyGkmgeVI71Y881hcrLyaXS75dhxzrub8fB1pFMvyxWjK+YdIKSqBz6BLuTnmti94RwbV56k27OW41VHFzvCY3xYPHU3dvY2eAU4cWh7AhtXnKDzkzVKrZ8iUpiC/v9AbGwsY8eO5Z133mHIkCG0aNGCUaNG0b1797+tO336dN58800GDhzIqVOn8PX1pXHjxnTq1OkGtLz0xH06DaOTE8EjX8fGzZ30zZs4/OQThWbmO4RUwtarcLDQtUlT7AODSFi48LJ1OlWvgUtsbQCil/9U6LXdbVqTe/rUte9IOXVLmzAuJGcxb+oWkhMzqVLVm1fH3m69JD7+XDqGi2ZsLP9mH3m5Jt5/5edC67mvV23u720ZTDdqWZknBzdh4aztfPbBegIrezDorVZEx+qS+WutXYfaJCWlM/mjH0mITyUyKpCPpjxuTe9z9kxyoRk3cedTePDeD63PP5/xC5/P+IV69cOYOsNyj47dO0/yZK+PrWXGvvs9AHd2rsfIt+6/Ab2Sxq1DSU3O5uvPtnEhMYtKEV4Mer8VHn99LxPOpReaoZidmcfMsX+SGJeBvYMNFSu50+fVpjRuHVpKPShfGt5WidTkbBZN30lKYhYhEZ688G5La3qfxHMZl2yvfGZ/sImkuEzsHGyoWMmN3q80puFtlQDLDKqzx1OYtPwoaReycXG3p0qUNy9PuI2gKh5FtkFujPqVolk9YJL1+Qfdngdgxtol9Jz1Rim1Sq7HPnPz7yeZOmqd9fnEkb8D0KVHLe7pVXBfL7l6vR+sT2ZmLsPeX0FKWjb1agUy9b17cHAoGL4eP32BpAsFaSg73hZJYnImEz5bS1yiJRXQ1Pe64OvtAoCdrQ0fv3s3Yz7+jb5DviUjM4dKQZ6MHtKOlo0tQWYvTyemvtuFD6f9wWMvfEVenomIUB8mvnUXUcWkFpIr07tDOJk5+QyfuYOUjFzqVvXmkxca4mBXkP72eFwGSWkF48R5q48B8Ni7awut6+2esXRpphPd10uHjnVJSkrjo/FLiY9PISo6mCmf9MX3r5v1njmTVGgMUadOGO+89xgTxi1h3AffUbmyP+Mn9KZqtYIrc94f04MPP/iOlwfN4sKFDAIDvej//B3c/0Aza5lHH2tFdk4e74z+hpQLGVSLDGTqp09TqZK+e/9WnVuDSLuQw7JZ+0hJyiYozJ2n3mqM21/pfZLiMguN63Oy8vjqox1ciM/Ezt4G/xBXHhlclzq3BlnLdB9SjyWf7WH2O5vJSM3By9+Zjj2iadop9EZ3T24080060bYc5vQ3mM1mXXxzk9lWPaq0myBXKXb3XgB2Jowu5ZbI1arp8zIA6bnflnJL5Gq42HUGYMO510u5JXK1GgYMA+C3M8NKuSVytZpVtHz/DH0bl3JL5GqYJ1uC3dqP3rz+vx81n/37K5blv8lQwTIZw/TbwFJuiVwtY7MxAOSalv9NSfkvsjO2A2Dp0UGl3BK5Wh1D3yvtJty8TCtLuwVXx9i6tFtwwymnv4iIiIiIiIiIiIhIGaH0PiIiIiIiIiIiIiJSsps1vU85pJn+IiIiIiIiIiIiIiJlhIL+IiIiIiIiIiIiIiJlhIL+IiIiIiIiIiIiIiJlhHL6i4iIiIiIiIiIiEjJlNP/pqGZ/iIiIiIiIiIiIiIiZYSC/iIiIiIiIiIiIiIiZYTS+4iIiIiIiIiIiIhIyZTe56ahmf4iIiIiIiIiIiIiImWEgv4iIiIiIiIiIiIiImWEgv4iIiIiIiIiIiIiImWEcvqLiIiIiIiIiIiISMlMyul/s9BMfxERERERERERERGRMkJBfxERERERERERERGRMkJBfxERERERERERERGRMkI5/UVERERERERERESkZGbl9L9ZaKa/iIiIiIiIiIiIiEgZoaC/iIiIiIiIiIiIiAgwceJEQkNDcXR0pFGjRmzYsKHE8gsWLCAqKgpHR0dq1arF0qVLC71uNpsZNmwYFStWxMnJiTZt2nDgwIHr2QUF/UVERERERERERETkb5hNN+fjH5g/fz4DBgxg+PDhbN68mdjYWNq1a8f58+eLLP/HH3/w4IMP8vjjj7Nlyxbuvvtu7r77bnbu3Gkt8+677zJ+/HimTJnC+vXrcXFxoV27dmRlZf2rzVESBf1FREREREREREREpNwbO3YsTzzxBD179qR69epMmTIFZ2dnPvvssyLLjxs3jvbt2zNo0CCio6N54403qFu3Lh999BFgmeX/4Ycf8uqrr9K5c2diYmKYNWsWp0+fZtGiRdetHwr6i4iIiIiIiIiIiEiZlJ2dTUpKSqFHdnb2ZeVycnLYtGkTbdq0sS4zGo20adOGtWvXFrnutWvXFioP0K5dO2v5I0eOcPbs2UJlPDw8aNSoUbHrvBYU9BcRERERERERERGRMmnUqFF4eHgUeowaNeqycvHx8eTn5xMQEFBoeUBAAGfPni1y3WfPni2x/P///0/WeS3YXrc1i4iIiIiIiIiIiEjZ8A/z4/9XDBkyhAEDBhRa5uDgUEqtuTEU9BcRERERERERERGRMsnBweGKgvy+vr7Y2Nhw7ty5QsvPnTtHhQoViqxToUKFEsv////nzp2jYsWKhcrUrl37n3TjH1F6HxEREREREREREREp1+zt7alXrx4rV660LjOZTKxcuZImTZoUWadJkyaFygP89NNP1vJVqlShQoUKhcqkpKSwfv36Ytd5LWimv4iIiIiIiIiIiIiUzHRzpvf5JwYMGMBjjz1G/fr1adiwIR9++CHp6en07NkTgO7duxMUFGS9J8Bzzz1Hy5YtGTNmDHfccQfz5s1j48aNfPLJJwAYDAaef/553nzzTapWrUqVKlV47bXXCAwM5O67775u/VDQX0RERERERERERETKvfvvv5+4uDiGDRvG2bNnqV27NsuWLbPeiPf48eMYjQXJc5o2bcrcuXN59dVXGTp0KFWrVmXRokXUrFnTWmbw4MGkp6fz5JNPkpycTLNmzVi2bBmOjo7XrR8K+ouIiIiIiIiIiIiIAP369aNfv35FvrZ69erLlnXr1o1u3boVuz6DwcDrr7/O66+/fq2a+LeU019EREREREREREREpIzQTH8RERERERERERERKZm57Of0Lys0019EREREREREREREpIxQ0F9EREREREREREREpIxQ0F9EREREREREREREpIxQTn8RERERERERERERKZly+t80DGaz2VzajRARERERERERERGR/7CU+aXdgqvjfn9pt+CGU3ofEREREREREREREZEyQul9bkKmH58p7SbIVTLePhGAjLzvSrklcrWcbe+0/CP/p9JtiFwdm7YAmBNnlXJD5GoZvLtb/pH2dek2RK6ea1cANpx7vZQbIlejYcAwAAx9G5dyS+RqmSevs/z/zKRSbolcLUPFpwGYa4gs5ZbI1XrIvM/yj7zlpdsQuTq27Sz/v/BF6bZDrp7Hg6XdgpuX0vvcNDTTX0RERERERERERESkjFDQX0RERERERERERESkjFDQX0RERERERERERESkjFBOfxEREREREREREREpkdmcX9pNuCqG0m5AKdBMfxERERERERERERGRMkJBfxERERERERERERGRMkLpfURERERERERERESkZCZTabdArpBm+ouIiIiIiIiIiIiIlBEK+ouIiIiIiIiIiIiIlBEK+ouIiIiIiIiIiIiIlBHK6S8iIiIiIiIiIiIiJTMrp//NQjP9RURERERERERERETKCAX9RURERERERERERETKCAX9RURERERERERERETKCOX0FxEREREREREREZGSKaf/TUMz/UVEREREREREREREyggF/UVEREREREREREREygil9xERERERERERERGRkim9z01DM/1FRERERERERERERMoIBf1FRERERERERERERMoIBf1FRERERERERERERMoI5fQXERERERERERERkZIpp/9NQzP9RURERERERERERETKCAX9RURERERERERERETKCKX3EREREREREREREZGSmZTe52ah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u+ftU/x1CfHxyTA01IF3GTuEbBgIF2dpn+L8hQd4/iIaz19Eo2bd8XLleXBnwXequXLp0bka0tIzMX7afmmfoqwdVs3vKH+N+jpONigPAAENykivUVecRHRsMjxcLbFqfkdZeB8NDTVcCX+O9VvDkJiYBhNjXVTws8eW1d3yLABMRMVPICnsKrNUbMRH+xZ3EaiQVBpKL1BTs/Z/IiX9V2mrSUOhIPtY8RaECke1AQBAErehmAtChSUwzlk8N3lX8RaECk9XOmni0tvJxVwQKoxKFtLBGEHvKsVcEiosyVLpDSdJpOLQo/TfJyglnTyzWeD2iZT0X9VekhNiM+tI8RaECketkfTfd7y59MMy+K24S/DDkrz4s7iLUCgCu//m+qhFqdAz/YmIiIiIiIiIiIiohGB4nx8GV0b5BoKCgqCrq6twCwoKKu7iEREREREREREREVEJwZn+38DkyZPzXVtAX5+LzhARERERERERERHR98FB/2/A3Nwc5ubmxV0MIiIiIiIiIiIiIirhOOhPRERERERERERERAUTM6b/j4Ix/YmIiIiIiIiIiIiIlAQH/YmIiIiIiIiIiIiIlATD+xARERERERERERFRwcSS4i4BfSbO9CciIiIiIiIiIiIiUhIc9CciIiIiIiIiIiIiUhIc9CciIiIiIiIiIiIiUhKM6U9EREREREREREREBROLi7sE9Jk405+IiIiIiIiIiIiISElw0J+IiIiIiIiIiIiISElw0J+IiIiIiIiIiIiISEkwpj8RERERERERERERFYwx/X8YnOlPRERERERERERERKQkOOhPRERERERERERERKQkGN6HiIiIiIiIiIiIiAomlhR3CegzcaY/EREREREREREREZGS4KA/EREREREREREREZGS4KA/EREREREREREREZGSYEx/IiIiIiIiIiIiIiqYWFzcJaDPxJn+RERERERERERERERKgoP+RERERERERERERERKguF9iIiIiIiIiIiIiKhgDO/zw+BMfyIiIiIiIiIiIiIiJcFBfyIiIiIiIiIiIiIiJcFBfyIiIiIiIiIiIiIiJcGY/kRERERERERERERUMLGkuEtAn4kz/YmIiIiIiIiIiIiIlAQH/YmIiIiIiIiIiIiIlAQH/YmIiIiIiIiIiIiIlARj+hMRERERERERERFRwcTi4i4BfSbO9CciIiIiIiIiIiIiUhICiUTCZZeJiIiIiIiIiIiIKF+S6+OKuwiFIvCbUtxF+O4Y3oeIiIiIiIiIiIiICibm3PEfBQf9f0AJGTuKuwhUSIbCNtIfRIeKtyBUeOpNpP8m8Tz8IenlnIOSk8VbDio8QR3pv8m7irccVHi6rQEAkjfLirkgVBgCyyAAgCRySTGXhApLUKqP9N/eVYq5JFRYkqVhAADR8l+LuSRUWOq9tkp/yD5WvAWhwlFtIP2X/fof1/t+PZESY0x/IiIiIiIiIiIiIiIlwUF/IiIiIiIiIiIiIiIlwfA+RERERERERERERFQwsbi4S0CfiTP9iYiIiIiIiIiIiIiUBAf9iYiIiIiIiIiIiIiUBMP7EBEREREREREREVHBGN7nh8GZ/kRERERERERERERESoKD/kRERERERERERERESoKD/kRERERERERERERESoIx/YmIiIiIiIiIiIioQBKJpLiLUCiC4i5AMeBMfyIiIiIiIiIiIiIiJcFBfyIiIiIiIiIiIiIiJcFBfyIiIiIiIiIiIiIiJcGY/kRERERERERERERUMLG4uEtAn4kz/YmIiIiIiIiIiIiIlAQH/YmIiIiIiIiIiIiIlATD+xARERERERERERFRwRje54fBmf5EREREREREREREREqCg/5EREREREREREREREqCg/5ERERERERERERERF8gLi4OHTp0gL6+PgwNDdGtWzckJycXmL5///5wc3ODlpYW7OzsMGDAALx7904unUAgyLNt3br1i8rGmP5EREREREREREREVDCxpLhL8J/SoUMHREZG4tixYxCJROjatSt69uyJzZs3K0wfERGBiIgIzJ49G56ennj+/DmCgoIQERGBnTt3yqVdu3YtGjduLHttaGj4RWXjoD8RERERERERERER0We6d+8eDh8+jMuXL6NChQoAgIULFyIgIACzZ8+GlZVVnjxlypTBrl27ZK+dnJwwdepUdOzYEVlZWVBTyx2qNzQ0hKWlZaHLx/A+RERERERERERERKSUMjIykJiYKLdlZGR81TFDQ0NhaGgoG/AHgPr160NFRQUXL1787OO8e/cO+vr6cgP+ANC3b1+YmpqiUqVKWLNmDSSSL3vKgoP+RERERERERERERFQwsfiH3KZPnw4DAwO5bfr06V/1q3jz5g3Mzc3l9qmpqcHY2Bhv3rz5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POLikrFg4QFExyRJ+4XL++Zej0bGfdQvLI3Zf3TBvAV/4895+6X9woU94eoifUJOVVUFT56+xZ6BFxEfnwJDQ214l7FHyMbBcHHJHVu6ees5Fi46gJTUTJQubYFJE39Di+YMbVcY7NsTEQAIJJ9aaZa+qWfPnqFWrVrw9/dHSEhIodYPSMjYUQQlo+/BUJiz0I3oUPEWhApPvYn03ySehz8kvZxzUHKyeMtBhSfIWSsieVfxloMKT1c6eULyZlkxF4QKQ2AZBACQRC75REr6rxKU6iP9tzdnYf6oJEulN+pFy38t5pJQYan32ir9IftY8RaECkc1J5Qp+/U/rvf9evpi4r97FncRCkWl2YriLsJ395+I6V+SODg4yMILhYeHF3dxiIiIiIiIiIiIiEiJcND/KwQFBUFXV1fhFhQUlG8+R0dHTJw4EeXLl/+OpSUiIiIiIiIiIiIiZffFMf0p1+TJk/NdW0BfX/87l4aIiIiIiIiIiIiISjoO+n8Fc3NzmJubF3cxiIiIiIiIiIiIiIqWWFzcJaDPxPA+RERERERERERERERKgoP+RERERERERERERERKguF9iIiIiIiIiIiIiKhgYklxl4A+E2f6ExEREREREREREREpCQ76ExEREREREREREREpCQ76ExEREREREREREREpCcb0JyIiIiIiIiIiIqKCicXFXQL6TJzpT0RERERERERERESkJDjoT0RERERERERERESkJDjoT0RERERERERERESkJBjTn4iIiIiIiIiIiIgKJMmWFHcR6DNxpj8RERERERERERERkZLgoD8RERERERERERERkZJgeB8iIiIiIiIiIiIiKpiY4X1+FJzpT0RERERERERERESkJDjoT0RERERERERERESkJDjoT0RERERERERERESkJBjTn4iIiIiIiIiIiIgKls2Y/j8KzvQnIiIiIiIiIiIiIlISHPQnIiIiIiIiIiIiIlISDO9DRERERERERERERAWSiBne50fBmf5EREREREREREREREqCg/5EREREREREREREREqCg/5EREREREREREREREqCMf2JiIiIiIiIiIiIqGDZjOn/o+BMfyIiIiIiIiIiIiIiJcFBfyIiIiIiIiIiIiIiJcFBfyIiIiIiIiIiIiIiJcGY/kRERERERERERERUsGxxcZeAPhNn+hMRERERERERERERKQkO+hMRERERERERERERKQmBRCKRFHchiIiIiIiIiIiIiOi/S7Tqt+IuQqGod99S3EX47jjTn4iIiIiIiIiIiIhISXAh3x/Qy+RlxV0EKiRb3SAAgOT1gmIuCRWWwHqA9IfEbcVbECoc/XbSfzMOFG85qPCETaX/pu8v3nJQ4Wn+BAAQnxtSzAWhwlCpPgcAsFngVswlocJqL3kAABAt/7WYS0KFpd5rKwBA0LtKMZeECkuyNEz6b9yGYi4JFYbAuLP0B/Ypflzv+xRESowz/YmIiIiIiIiIiIiIlARn+hMRERERERERERFRwbK5NOyPgjP9iYiIiIiIiIiIiIiUBAf9iYiIiIiIiIiIiIiUBMP7EBEREREREREREVHBxAzv86PgTH8iIiIiIiIiIiIiIiXBQX8iIiIiIiIiIiIiIiXBQX8iIiIiIiIiIiIiIiXBmP5EREREREREREREVCBJNmP6/yg405+IiIiIiIiIiIiISElw0J+IiIiIiIiIiIiISElw0J+IiIiIiIiIiIiISEkwpj8RERERERERERERFUwsLu4S0GfiTH8iIiIiIiIiIiIiIiXBQX8iIiIiIiIiIiIiIiXB8D5EREREREREREREVLBsSXGXgD4TZ/oTERERERERERERESkJDvoTERERERERERERESkJDvoTERERERERERERESkJxvQnIiIiIiIiIiIiogJJxIzp/6PgTH8iIiIiIiIiIiIiIiXBQX8iIiIiIiIiIiIiIiXBQX8iIiIiIiIiIiIiIiXBmP5EREREREREREREVLBsxvT/UXCmPxERERERERERERGRkuCgPxERERERERERERGRkmB4HyIiIiIiIiIiIiIqGMP7/DA405+IiIiIiIiIiIiISElw0J+IiIiIiIiIiIiISElw0J+IiIiIiIiIiIiISEkwpj8RERERERERERERFUgiZkz/HwVn+hMRERERERERERERKQkO+hMRERERERERERERKQmG9yEiIiIiIiIiIiKigmWLi7sE9Jn+UzP9J06cCF9f3yI59qlTpyAQCJCQkPDNjvns2TMIBAKEh4d/s2MSERERERERERERERVWoWf6d+nSBevXr8+zv1GjRjh8+PBXFUpZ7dmzBzNnzsS9e/cgFothZ2eHBg0aYN68ecVdtO/mr+3h2L7hKuJiU+DkYoZ+w+vAvYyl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IuhpqMLVTBPLWzuhqr30hre6qgBLW5bG3LMR6PvXE6RlimFrqIGpje1Rs7RBnjJQ0atg54FTwbl9/7ltBgEA1oUeQNcNU4qpVCVT947+SEsTYfyMg9I+hY8tVs79FcIP1td78Toe8e/SZK8D6nsiLj4FC1edRnRsCjxcLLBy7q8wNc470J+f0g6mWDqrLRavPotfe6yDikAAD1dLrJz7m1yoIfoy37qP8TbqHU6cugMA+LnNHLnP2rC6DypXzD8MOCkBPnXzwxBIJHx48UfzMnlZcReBCslWNwgAIHm9oJhLQoUlsB4g/SFxW8EJ6b9JP2dhsowDxVsOKjxhU+m/6fsLTkf/XZrSR/jF54YUc0GoMFSqSzv3mwUlY9KKMmoveQAAEC3/tZhLQoWl3kt6M1/Qu0oxl4QKS7JUGipYErehmEtChSEw7iz9gX2KH9f7PgV9sbQxAcVdhELRmnrw04mUzH8upj8RERERERERERERERUOB/2/kaCgIOjq6ircgoKCirt4RERERERERERERFQCcHWNb2Ty5Mn5ri2gr6//nUtDRERERERERERE9O1Ishkl/kfBQf9vxNzcHObm5sVdDCIiIiIiIiIiIiIqwRjeh4iIiIiIiIiIiIhISXCmPxEREREREREREREVTMzwPj8KzvQnIiIiIiIiIiIiIlISHPQnIiIiIiIiIiIiIlISHPQnIiIiIiIiIiIiIlISjOlPRERERERERERERAXLFhd3CegzcaY/EREREREREREREZGS4KA/EREREREREREREdEXiIuLQ4cOHaCvrw9DQ0N069YNycnJBeapXbs2BAKB3BYUFCSX5sWLF2jatCm0tbVhbm6OYcOGISsr64vKxvA+RERERERERERERERfoEOHDoiMjMSxY8cgEonQtWtX9OzZE5s3by4wX48ePTB58mTZa21tbdnP2dnZaNq0KSwtLXHhwgVERkaic+fOUFdXx7Rp0z67bBz0JyIiIiIiIiIiIqICScSS4i7Cf8a9e/dw+PBhXL58GRUqVAAALFy4EAEBAZg9ezasrKzyzautrQ1LS0uF7x09ehR3797F8ePHYWFhAV9fX0yZMgUjRozAxIkToaGh8VnlY3gfIiIiIiIiIiIiIlJKGRkZSExMlNsyMjK+6pihoaEwNDSUDfgDQP369aGiooKLFy8WmDckJASmpqYoU6YMRo0ahdTUVLnjent7w8LCQravUaNGSExMxJ07dz67fBz0JyIiIiIiIiIiIiKlNH36dBgYGMht06dP/6pjvnnzBubm5nL71NTUYGxsjDdv3uSbr3379ti0aRNOnjyJUaNGYePGjejYsaPccT8c8Acge13QcT/G8D5EREREREREREREVLDsHzO8z6hRoxAcHCy3TygUKkw7cuRIzJw5s8Dj3bt3r9Bl6dmzp+xnb29vlCpVCvXq1cPjx4/h5ORU6ON+jIP+RERERERERERERKSUhEJhvoP8HxsyZAi6dOlSYJrSpUvD0tISUVFRcvuzsrIQFxeXb7x+RSpXrgwAePToEZycnGBpaYlLly7JpXn79i0AfNFxOehPRERERERERERERCWemZkZzMzMPpnO398fCQkJuHr1KsqXLw8AOHHiBMRisWwg/3OEh4cDAEqVKiU77tSpUxEVFSULH3Ts2DHo6+vD09Pzs4/LmP5ERERERERERERERJ/Jw8MDjRs3Ro8ePXDp0iWcP38e/fr1w6+//gorKysAwOvXr+Hu7i6buf/48WNMmTIFV69exbNnz7Bv3z507twZNWvWhI+PDwCgYcOG8PT0RKdOnXDjxg0cOXIEY8eORd++fT/7aQWAM/2JiIiIiIiIiIiI6BMk4h8zpn9RCQkJQb9+/VCvXj2oqKigdevWWLBggex9kUiEBw8eIDU1FQCgoaGB48ePY968eUhJSYGtrS1at26NsWPHyvKoqqri77//Ru/eveHv7w8dHR0EBgZi8uTJX1Q2DvoTEREREREREREREX0BY2NjbN68Od/3HRwcIJHk3iixtbXF6dOnP3lce3t7HDx48KvKxvA+RERERERERERERERKgjP9iYiIiIiIiIiIiKhAkmyG9/lRcKY/EREREREREREREZGS4KA/EREREREREREREZGS4KA/EREREREREREREZGSYEx/IiIiIiIiIiIiIiqQRMyY/j8KzvQnIiIiIiIiIiIiIlISHPQnIiIiIiIiIiIiIlISHPQnIiIiIiIiIiIiIlISjOlPRERERERERERERAUSZzOm/4+CM/2JiIiIiIiIiIiIiJQEB/2JiIiIiIiIiIiIiJQEw/sQERERERERERERUYEkYob3+VEIJBIJW4uIiIiIiIiIiIiI8hX/e63iLkKhGK05XdxF+O4Y3oeIiIiIiIiIiIiISEkwvM8PKCptQ3EXgQrJXKszACBJtKeYS0KFpafeEgDw5pcqxVwSKgzLnWEAgOW3exdzSaiwepVZCgA4/nJUMZeECqu+7XQAgEh8pJhLQoWhrtJI+kMW2++HpZbThtnHirccVHiqDQAAkjj2C39UAmNpv1DQm32KH5FkqbRPMTc8qJhLQoU12HdZcReBqMhx0J+IiIiIiIiIiIiICiQRi4u7CPSZGN6HiIiIiIiIiIiIiEhJcNCfiIiIiIiIiIiIiEhJMLwPERERERERERERERVIki0p7iLQZ+JMfyIiIiIiIiIiIiIiJcFBfyIiIiIiIiIiIiIiJcFBfyIiIiIiIiIiIiIiJcGY/kRERERERERERERUIImYMf1/FJzpT0RERERERERERESkJDjoT0RERERERERERESkJDjoT0RERERERERERESkJBjTn4iIiIiIiIiIiIgKJMlmTP8fBWf6ExEREREREREREREpCQ76ExEREREREREREREpCYb3ISIiIiIiIiIiIqICScQM7/Oj4Ex/IiIiIiIiIiIiIiIlwUF/IiIiIiIiIiIiIiIlwUF/IiIiIiIiIiIiIiIlwZj+RERERERERERERFQgMWP6/zA405+IiIiIiIiIiIiISElw0J+IiIiIiIiIiIiISElw0J+IiIiIiIiIiIiISEkwpj8RERERERERERERFUiSzZj+PwrO9CciIiIiIiIiIiIiUhIc9CciIiIiIiIiIiIiUhIM70NEREREREREREREBZKIGd7nR8GZ/kRERERERERERERESoKD/kRERERERERERERESoKD/kRERERERERERERESoIx/YmIiIiIiIiIiIioQIzp/+PgTH8iIiIiIiIiIiIiIiXBQX8iIiIiIiIiIiIiIiXB8D5EREREREREREREVCBJNsP7/Cg405+IiIiIiIiIiIiISElw0P8zOTg4YN68efm+/+zZMwgEAoSHhwMATp06BYFAgISEhHzzrFu3DoaGht+0nERERERERERERERUcilteJ8uXbogISEBe/fu/WTaxMREzJw5E7t27cKzZ89gaGiIMmXKoE+fPmjZsiUEAsEnj2Fra4vIyEiYmpp+g9Irj91br2DL+jDExSbDydUCg0Y0hKe3tcK0Tx9FY/XS03hw9w3eRL5D/6EN0LZjJbk0bZoswpvId3nytmxb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qKD01WUbcod1riFwJFQQlodkXzqtf8DNo5XVkAprAQDnQ6YKHAkVVGMbTwBAuuSMwJFQQaiLZfXPkcHxU1rF/hvDzHPCxkEFp9YEACCN5n2hshKZyO4LRcN4T6GMpGtl9xTL/YcKHAkV1NhK64QOQWm9blRJ6BAKxO5vf6FD+OFYG4WIiIiIiIiIiIiISEWofHkfIiIiIiIiIiIiIvo63BRdeXCmPxERERERERERERGRimDSn4iIiIiIiIiIiIhIRbC8DxERERERERERERHlSprJ8j7KgjP9iYiIiIiIiIiIiIhUBJP+REREREREREREREQqgkl/IiIiIiIiIiIiIiIVwZr+RERERERERERERJQrqYQ1/ZUFZ/oTEREREREREREREakIJv2JiIiIiIiIiIiIiFQEk/5ERERERERERERERCqCNf2JiIiIiIiIiIiIKFfSTNb0Vxac6U9EREREREREREREpCKY9CciIiIiIiIiIiIiUhEs70NEREREREREREREuZJKWN5HWXCmPxERERERERERERGRimDSn4iIiIiIiIiIiIhIRTDpT0RERERERERERESkIljTn4iIiIiIiIiIiIhyxZr+yoMz/YmIiIiIiIiIiIiIVAST/kREREREREREREREKoLlfYiIiIiIiIiIiIgoV9JMlvdRFpzpT0RERERERERERESkIpj0JyIiIiIiIiIiIiJSEUz6ExERERERERERERGpCNb0JyIiIiIiIiIiIqJcSSSs6a8sONOfiIiIiIiIiIiIiEhFMOlPRERERERERERERKQimPQnIiIiIiIiIiIiIlIRrOlPRERERERERERERLmSSISOgPKKM/2JiIiIiIiIiIiIiFQEk/5ERERERERERERERCqC5X2IiIiIiIiIiIiIKFcs76M8ONOfiIiIiIiIiIiIiEhFiKRSqVToIIiIiIiIiIiIiIio8LpfwVnoEArE9cFjoUP44TjTn4iIiIiIiIiIiIhIRbCmvzKSXhA6AiooUQMAwOv4NQIHQgVlpz8cACA5MVjgSKggxK03AADMl7cWOBIqqIixJwAAVus6CBwJFdS7oUcAAKdeTRQ4EiqIlvaLZf/4sFfYQKjgDLvL/jf9L2HjoIJTbyH739STwsZBBafZCgCw3H+owIFQQYyttA4AIBpWQ+BIqKCka32FDkFpsaa/8uBMfyIi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RCqCNf2JiIiIiIiIiIiIKFes6a88ONOfiIiIiIiIiIiIiEhFMOlPRERERERERERERKQimPQnIiIiIiIiIiIiIlIRrOlPRERERERERERERLliTX/lwZn+REREREREREREREQqgkl/IiIiIiIiIiIiIiIVwfI+RERERERERERERJQrlvdRHpzpT0RERERERERERESkIpj0JyIiIiIiIiIiIiJSEUz6ExERERERERERERGpCNb0JyIiIiIiIiIiIqJcSaRCR0B5xZn+REREREREREREREQqgkl/IiIiIiIiIiIiIiIVwfI+RERERERERERERJQriUToCCivONOfiIiIiIiIiIiIiEhFMOlPRERERERERERERKQimPQnIiIiIiIiIiIiIlIRrOlPRERERERERERERLliTX/lwZn+REREREREREREREQqgkl/IiIiIiIiIiIiIiIVwaQ/EREREREREREREZGKYE1/IiIiIiIiIiIiIsoVa/orD870JyIiIiIiIiIiIiJSEUz6ExERERERERERERGpCJb3ISIiIiIiIiIiIqJcsbyP8uBMfyIiIiIiIiIiIiIiFcGkPxERERERERERERGRihBJpVKp0EEQERERERERERERUeG1R+QkdAgF0kP6ROgQfjgm/anQSE1NhaenJ6ZOnQpNTU2hw6EC4BgqP46h8uMYKjeOn/LjGCo/jqHy4xgqN46f8uMYKj+OIZHyY9KfCo24uDgYGhriw4cPMDAwEDocKgCOofLjGCo/jqFy4/gpP46h8uMYKj+OoXLj+Ck/jqHy4xgSKT/W9CciIiIiIiIiIiIiUhFM+hMRERERERERERERqQgm/YmIiIiIiIiIiIiIVAST/lRoaGpqYubMmdwkRolxDJUfx1D5cQyVG8dP+XEMlR/HUPlxDJUbx0/5cQyVH8eQSPlxI18iIiIiIiIiIiIiIhXBmf5ERERERERERERERCqCSX8iIiIiIiIiIiIiIhXBpD8RERERERERERERkYpg0p+IiIiIiIiIiIiISEUw6U9EREREREREREREpCKY9Ceir3LhwoUcj61fv/4HRkJfIy0tDU+ePEFGRobQodBXCA8Px5UrV3DlyhWEh4cLHQ4RERERERERCYBJfyqUYmNjhQ6B8qh58+aYOHEi0tPT5W2RkZFo06YNpkyZImBklBdJSUkYOHAgdHR0UL58eQQHBwMAfv31VyxYsEDg6Civ4uPj0bt3b5QsWRL16tVDvXr1ULJkSfTq1QsfPnwQOjzKh7S0NLx58wbBwcEKDyL6PmJiYuDt7Y24uLgsxz58+JDjMSL6vlJSUrB9+3asWbMGz549EzocIiIipcOkPwlu4cKF2L9/v/x5165dYWpqipIlSyIgIEDAyCgvLly4gCNHjqBatWp4+PAhTp48iQoVKiAuLg7+/v5Ch0dfMHXqVAQEBODixYvQ0tKStzdu3Fjh95IKt0GDBsHPzw8nTpxAbGwsYmNjceLECdy6dQtDhgwROjzKg2fPnqFu3brQ1taGnZ0dSpUqhVKlSsHe3h6lSpUSOjzKgxcvXmD69Ono3r27fKXNX3/9hcDAQIEjo9ysWrUKly9fhoGBQZZjhoaGuHLlCry9vQWIjPLr7du38PLywsiRIzFu3DisX78eMTExQodFeTBu3Dj8+uuv8udpaWmoWbMmfvnlF0ybNg3u7u64fv26gBFSToyNjWFiYpKnBykHfp4hUh0iqVQqFToIKtpKlSqF3bt3o1atWjh37hy6du2K/fv348CBAwgODsbZs2eFDpG+ICEhAUOHDsWhQ4cgkUgwZ84cTJo0CSKRSOjQ6Avs7Oywf/9+1KhRA/r6+ggICICDgwOeP3+OypUrc3ajktDV1cWZM2dQp04dhfYrV66gefPmSExMFCgyyqvatWujWLFimDJlCkqUKJHl72fFihUFiozy4tKlS2jRogVq166Ny5cv49GjR3BwcMCCBQtw69YtHDp0SOgQKQeVKlXC0qVL0ahRo2yP//3335gwYQLu3r37gyOj/FizZg3GjRuHtLQ0+Rc4cXFx0NbWxqZNm9C9e3dIpVL4+/vD3d1d4GjpcxUqVMD8+fPRtm1bAMDWrVsxfvx43L17F7a2thgwYADCw8Nx8uRJgSOlz23fvl3+76ioKMydOxfNmjVDzZo1AQDXr1/HmTNnMGPGDIwdO1aoMCmP+HmGSLUUEzoAorCwMNjY2AAATpw4ga5du6Jp06awt7dH9erVBY6O8uLp06e4desWrK2t8e7dOzx58gRJSUnQ1dUVOjT6goiICFhYWGRpT0xM5Jc2SsTU1BSGhoZZ2g0NDWFsbCxARJRf/v7+uH37NpydnYUOhQpgypQpmDt3LsaNGwd9fX15e8OGDbFq1SoBI6MvefHiBcqUKZPj8TJlyuDFixc/MCLKr5MnT2LUqFEYM2YMxo8fjxIlSgAAQkNDsXjxYvTt2xc2NjZYs2YNnJ2dmfQvhIKDg1GuXDn587Nnz6Jz586ws7MDAIwePRotW7YUKjzKRd++feX/7tSpE/744w+MHDlS3jZq1CisWrUK58+fZ9JfCfDzDJFqYXkfEpyxsTFCQkIAAKdPn0bjxo0BAFKpFJmZmUKGRnmwYMEC1KxZE02aNMGDBw9w48YN3L17F25ublyGqwSqVq2qMGvq/4n+TZs2yWfoUOE3ffp0jBs3DmFhYfK2sLAwTJw4ETNmzBAwMsqrcuXKITIyUugwqIDu37+PDh06ZGm3sLDguBZyampqePfuXY7H3717B7GYt0yF2eLFizFlyhQsWbJEnvAHgBIlSmDZsmWYNGkSmjRpguvXryskKKnwEIvF+LQAga+vL2rUqCF/bmRkxFJNSuDMmTNo3rx5lvbmzZvj/PnzAkRE+cXPM0SqhZ9gSXAdO3ZEjx490KRJE0RFRaFFixYAgLt378LR0VHg6OhLVq5ciaNHj8Lb2xtaWlqoUKECbty4gY4dO6J+/fpCh0dfMH/+fEybNg3Dhg1DRkYGVq5ciaZNm2Lr1q2YN2+e0OFRHq1duxa+vr6wtbWFo6MjHB0dYWtri2vXrmH9+vWoXLmy/EGFR1xcnPyxcOFCTJo0CRcvXkRUVJTCMZbZKvyMjIwQGhqapf3u3bsoWbKkABFRXrm7u+Po0aM5Hj9y5Ahnhhdyd+7cQe/evXM83rt3b6SmpuLSpUvymeNUuLi4uMDHxwcAEBgYiODgYDRo0EB+/PXr1yhevLhQ4VEemZqa4tixY1najx07BlNTUwEiovzi5xki1cLyPiS45cuXw97eHiEhIVi0aBH09PQAyJbkDh8+XODo6Evu378PMzMzhTZ1dXUsXrwYrVu3Figqyqs6derA398fCxYsgKurK86ePYvKlSvj+vXrcHV1FTo8yqP27dsLHQIVgJGRkUIZLalUmqWuuFQqhUgk4sq3Qq5bt26YPHkyDh48CJFIBIlEgn///RcTJkxAnz59hA6PcjFy5Eh069YN1tbWGDZsGNTU1AAAmZmZWLNmDZYvX449e/YIHCXlJjMzE+rq6jkeV1dXh7a2NmxtbX9gVJQfkyZNQrdu3XDy5EkEBgaiZcuWCpvYnzp1Ch4eHgJGSHkxe/ZsDBo0CBcvXpSX6fXz88Pp06exceNGgaOjvODnGSLVwo18ieirxcbG4tChQ3jx4gUmTpwIExMT3LlzB8WLF+eMACKiHFy6dCnPfevVq/cdI6GvlZaWhhEjRmDbtm3IzMxEsWLFkJmZiR49emDbtm3yRDIVTr/99hs8PT2hr68PBwcHAMDLly+RkJCAiRMnYsGCBQJHSLnx8PBA9+7dc6wXvmzZMuzbtw83btz4wZFRfvz99984ceIELC0t8euvv0JHR0d+bPbs2ahXrx5XESsBPz8/eHl54dGjRwBkqzhGjRrFvfqUBD/PEKkWJv1JcNu3b4eZmRlatWoFQDbTY8OGDShXrhz27t3LZbiF3L1799C4cWMYGhri1atXePLkCRwcHDB9+nQEBwdjx44dQodIucipbIhIJIKmpiY0NDR+cET0tVJSUrB//34kJiaiSZMmuW5QSURfTyqVIiQkBObm5oiMjMT9+/eRkJAAd3d3/v4pkRs3bmD37t14/vw5pFIpypYtix49enB2sRLYvn07hg0bhiVLlmDw4MEoVky2mD0jIwPr16/HxIkTsWbNGvTr10/YQOmbGT58OP74448sq42J6NsICQnh5xkiFcCkPwnOyckJa9euRcOGDXH9+nU0btwYy5cvx4kTJ1CsWDEcPnxY6BApF40aNUKVKlWwaNEi6OvrIyAgAA4ODrh27Rp69OiBV69eCR0i5UIsFiuUF/mctbU1+vXrh5kzZ3Ijw0Jo3LhxSE9Ph7e3NwDZ7BwPDw88fPgQOjo6yMjIwNmzZ1GrVi2BI6Uv2bp1K/T09NClSxeF9oMHDyIpKYmbTxZiEokEWlpaCAwM5E1xEcBkY+E0YcIELFu2DPr6+ihdujSkUql8tcaoUaOwfPlyoUOkb8jAwAD+/v7ylTkknPzsO2RgYPAdI6Fv4fLly3B2doaFhYVCe3p6Oq5fv46ffvpJoMiIqCCYwSHBhYSEyDfsPXr0KDp16oTBgwfD09MTV65cETg6+pJbt25hyJAhWdpLliyJsLAwASKi/Ni2bRusrKwwbdo0HD16FEePHsW0adNQsmRJrF27FoMHD4aXlxdLGxRSZ8+eRZMmTeTPd+/ejeDgYDx79gwxMTHo0qULN2RWEp6entkmES0sLDB//nwBIqK8EovFKFOmDKKiooQOhX6AXbt2cXPtQmjJkiW4du0a+vXrB0tLS5QoUQL9+vXDv//+y4S/CuK8xcLDyMgIxsbGuT7+34cKv/r166NixYrw9fVVaI+OjlbYXJuIlAM38iXB6enpISoqCra2tjh79izGjRsHANDS0kJycrLA0dGXaGpqZnvz+/TpU5ibmwsQEeXH9u3bsXTpUnTt2lXe1qZNG7i6umL9+vX4+++/YWtri3nz5mHatGkCRkrZCQ4ORrly5eTPz549i86dO8vLoo0ePRotW7YUKjzKh+DgYIVNC//Pzs4OwcHBAkRE+bFgwQJMnDgRa9euRYUKFYQOh74jJhsLrxo1aqBGjRpf7MfVGkTfzoULF4QOgb6xbt26oVGjRli9erVCWTS+/xEpHyb9SXBNmjTBoEGD4O7ujqdPn8oTVIGBgbC3txc2OPqitm3b4o8//sCBAwcAyGrBBwcHY/LkyejUqZPA0dGXXLt2DevWrcvS7u7ujuvXrwMA6tSpw6RjISUWixU+gPv6+mLGjBny50ZGRoiJiREiNMonCwsL3Lt3L8v7XkBAAExNTYUJivKsT58+SEpKQsWKFaGhoQFtbW2F49HR0QJFRkSf27VrFyZMmMCkP9E3UK9ePaFDoG9IJBJh6tSpqFu3Lvr06YN79+5h6dKl8mNEpFyY9CfBrV69GtOnT0dISAj+/PNPeXLj9u3b6N69u8DR0ZcsXboUnTt3hoWFBZKTk1GvXj2EhoaiZs2aLCuiBGxsbLB58+Ys5Xs2b94MGxsbAEBUVBSX5BZSLi4u8PHxwbhx4xAYGIjg4GCFpbevX79G8eLFBYyQ8qp79+4YNWoU9PX15fVSL126hNGjR6Nbt24CR0dfsmLFCqFDIKI84mxVom/n3r17qFChAsRiMe7du5drXzc3tx8UFRXU//8+duzYEaVKlUK7du3w8OFDrFy5UuDIiKgguJEvEX0TV69exb1795CQkIAqVaqgUaNGQodEeXD8+HF06dIFzs7OqFatGgDZPg2PHj3Cn3/+idatW2Pt2rV49uwZli1bJnC09LkjR46gW7duqFOnDgIDA1GtWjX4+PjIj0+ePBlBQUHylThUeKWlpaF37944ePAgihWTzcmQSCTo06cP1q1bBw0NDYEjJCIA0NfXR0BAADcQVWIcQ+XHMSw8xGIxwsLCYGFhAbFYDJFIlO0XayKRCJmZmQJESPnx6XgCQFhYGNq3b483b94gNDSUY0ikZDjTnwqNpKQkBAcHIy0tTaGdMwIKp+vXryMqKgqtW7cGICsB8+LFCyxatAhJSUlo3749vL29oampKXCklJu2bdviyZMnWLduHZ4+fQoAaNGiBY4ePYqEhAQAwLBhw4QMkXLRoUMHnDp1CidOnEDTpk3x66+/KhzX0dHB8OHDBYqO8koqlSIsLAzbtm3D3Llz4e/vD21tbbi6usr3ZyDlkZKSkuWzjIGBgUDREBGpnl69evHvaiERFBQk38ctKChI4Gjoa/Xt21ehRKGlpSUuXbqEwYMH4/LlywJGRkQFwZn+JLiIiAj069cPp0+fzvY4v00unFq0aIH69etj8uTJAID79++jSpUq6Nu3L1xcXLB48WIMGTIEs2bNEjZQype4uDjs3bsXW7Zswa1bt/j7R/QDSCQSaGlpITAwEGXKlBE6HCqAxMRETJ48GQcOHEBUVFSW4/xbqjqGDRuGOXPmsB68EuMs8cLlSyVhPsXJYERERHnHmf4kuDFjxuDDhw/w8/ND/fr1ceTIEbx//x5z586VbxpDhY+/vz/mzJkjf75v3z54eHhg48aNAGS14mfOnMmkv5K4fPkyNm/ejD///BNWVlbo2LEjVq1aJXRYlA8xMTHYvHkzHj16BEBW73/AgAEwMTERODL6ErFYjDJlyiAqKopJfyU1adIkXLhwAWvXrkXv3r2xevVqvH37FuvXr8+yZwoVHgVJNq5du/Z7hUNUJFWqVEleEuZLG4XyC9TC79mzZ7hw4QLCw8MhkUgUjv3+++8CRUW54b4MRKqLM/1JcCVKlMCxY8fg4eEBAwMD3Lp1C2XLlsXx48exaNEiXL16VegQKRtaWlp49uyZfLPXOnXqoEWLFvjtt98AAK9evYKrqyvi4+OFDJNy8f9yIps3b0ZcXBy6du2KdevWISAgAOXKlRM6PMqHy5cvo02bNjA0NETVqlUByDZDj42NhY+Pj3xjWCq8fHx8sGjRIqxduxYVKlQQOhzKJ1tbW+zYsQP169eHgYEB7ty5A0dHR+zcuRN79+7FqVOnhA6RsvFp/WkmG4sOrtYoXF6/fi3/9927dzFhwgRMnDgRNWvWBCArKbp06VIsWrQI7du3FyhKyouNGzdi2LBhMDMzg6WlpcLfVZFIhDt37ggYHeXkS/syfPo+yfdCIuXCpD8JzsDAAPfu3YO9vT3s7OywZ88e1K5dG0FBQShfvjySkpKEDpGyYWdnh507d+Knn35CWloajIyM4OPjI9/A9/79+6hXrx6io6MFjpSy06ZNG1y+fBmtWrVCz5490bx5c6ipqUFdXZ1JfyXk6uqKmjVrYu3atVBTUwMgS1ANHz4c165dw/379wWOkL7E2NgYSUlJyMjIgIaGhkI9VQD8W1rI6enp4eHDh7C1tYW1tTUOHz4MDw8PBAUFwdXVVb5HChUuTDYqP5aGUS0eHh6YNWsWWrZsqdB+6tQpzJgxA7dv3xYoMsoLOzs7DB8+XF7+lZTD69evYWtrC5FIpPC+mB3uNUWkXFjehwTn5OSEJ0+ewN7eHhUrVsT69ethb2+PdevWoUSJEkKHRzlo2bIlpkyZgoULF+Lo0aPQ0dFB3bp15cfv3buH0qVLCxgh5eavv/7CqFGjMGzYMJYTUQHPnz/HoUOH5Al/AFBTU8O4ceOwY8cOASOjvFqxYoXQIdBXcHBwQFBQEGxtbeHs7IwDBw7Aw8MDPj4+MDIyEjo8ysGnyYsuXbrAy8tLIdno5uYGGxsbzJgxg0n/QoqlYVTL/fv3UapUqSztpUqVwsOHDwWIiPIjJiYGXbp0EToMyqdP3wuZ1CdSLUz6k+BGjx6N0NBQAMDMmTPRvHlz7N69GxoaGti2bZuwwVGO5syZg44dO6JevXrQ09PD9u3boaGhIT++ZcsWNG3aVMAIKTdXr17F5s2bUaVKFbi4uKB3797o1q2b0GFRAVWuXBmPHj2Ck5OTQvujR49QsWJFgaKi/Ojbt6/QIVABvHz5Evb29ujfvz8CAgJQr149TJkyBW3atMGqVauQnp6OZcuWCR0m5QGTjcopKChI/u8vrdagws/FxQWenp7YtGmT/L4iLS0Nnp6ecHFxETg6+pIuXbrg7NmzGDp0qNChUD49ffoUsbGx8PDwkLf9/fffmDt3LhITE9G+fXtMmzZNwAiJqCBY3ocKnaSkJDx+/Bi2trastakEPnz4AD09PYUZxoCsFIWenp7CFwFU+CQmJmL//v3YsmULbty4gczMTCxbtgwDBgyAvr6+0OFRLj4tafDo0SNMmjQJv/76K2rUqAEA8PX1xerVq7FgwQL8/PPPQoVJBZCSkoK0tDSFNgMDA4GiodyoqakhNDQUFhYWAICff/4ZXl5eSElJwe3bt+Ho6MiSIkqicuXKqFChQpZk46BBg/DgwQPWolYCLA2j/G7cuIE2bdpAKpXK/3beu3cPIpEIPj4+CglJKhy8vLzk/05MTMSyZcvQqlUruLq6Ql1dXaHvqFGjfnR4lEcdOnSAq6sr/vjjDwCQl1quW7cunJ2dsWXLFsyZMwdjxowRNlAiyhcm/YmICADw5MkTbN68GTt37kRsbCyaNGmC48ePCx0W5SC7jbayw023lENiYiImT56MAwcOICoqKstxjmHh9OnmdwCgr6+PgIAAODg4CBwZ5ReTjcpPW1sbd+7cyTIj/NGjR6hcuTKSk5MFiozyIzExEbt378bjx48ByGb/9+jRA7q6ugJHRtnJboVUdkQiEV6+fPmdo6GCsrGxwYEDB+SrpObOnYtDhw7B398fALB582Z4e3vLnxORcmDSnwQxbty4PPflsniiHyszMxM+Pj7YsmULk/6F2Jc22voU63MWfiNGjMCFCxcwZ84c9O7dG6tXr8bbt2+xfv16LFiwAD179hQ6RMoGk/6qhclG5cbVGkREBaOtrY2nT5/CxsYGANCoUSPUqlULc+bMAQC8ePECVapUQWxsrIBRElF+saY/CeLu3bt56velDbmI6NtTU1ND+/btuWlhIcdEvmrx8fHBjh07UL9+ffTv3x9169aFo6Mj7OzssHv3bib9CymRSJTlswo/uygvXV1dDB48WOgwqIDWrVuHNm3awNraOtvVGqQcdu7cifXr1+Ply5e4fv067OzssHz5cjg4OKBdu3ZCh0c5iIuLg56eHsRisUK7RCJBQkICyxQWciYmJggNDYWNjQ0kEglu3bqlMFEzLS3ti6uLiajwYdKfBHHhwgWhQyAiUmrHjx9HixYtoK6u/sUVGW3btv1BUVFBRUdHy2eHGxgYIDo6GgBQp04dDBs2TMjQKBdSqRT9+vWDpqYmANl+DEOHDs0yM/zw4cNChEf5xGSjcvPw8MDLly8VVmv8/PPPXK2hRNauXYvff/8dY8aMwdy5c+Wl7YyNjbFixQr+HhZSR44cweTJk+Hv7w8dHR2FY8nJyahWrRqWLFmCNm3aCBQhfUn9+vUxZ84crFmzBgcPHoREIkH9+vXlxx8+fAh7e3vB4iOigmHSnwT34cMHZGZmwsTERKE9OjoaxYoV46wAIqJstG/fXl5WJLdVGazprxwcHBwQFBQEW1tbODs748CBA/Dw8ICPjw+MjIyEDo9y0LdvX4XnvXr1EigS+lpMNqoGrtZQbt7e3ti4cSPat2+PBQsWyNurVq2KCRMmCBgZ5Wbt2rWYNGlSloQ/IPudnDx5MlatWsWkfyE2b948NGnSBHZ2dlBTU4OXl5fCl6U7d+5Ew4YNBYyQiAqCNf1JcC1atECbNm0wfPhwhfZ169bh+PHjOHXqlECRERER/RjLly+HmpoaRo0ahfPnz8s3FE1PT8eyZcswevRooUMkUmnlypXD/Pnz0b59e4W9GR48eID69esjMjJS6BApD7haQ7lpa2vj8ePHsLOzU/g9fPbsGdzc3LgZcyFlZWWFy5cvw9HRMdvjz58/x08//YR379794MgoPzIyMhAYGAhzc3NYWVkpHAsICIC1tTVMTU0Fio6ICkL85S5E35efnx8aNGiQpb1+/frw8/MTICIiIuVw/fp1nDhxQqFtx44dKFWqFCwsLDB48GCkpqYKFB3lhUQiwcKFC3Ho0CHs3LkTU6ZMQe3atfH48WPs2bMHd+/eZcKf6AcICgqCu7t7lnZNTU0kJiYKEBHl19q1azFu3Di0aNECMTExWVZrUOFXqlQp+Pv7Z2k/ffo0XFxcfnxAlCcxMTHIyMjI8Xh6ejpiYmJ+YERUEMWKFUN0dHSWhD8AVKxYkQl/IiXEpD8JLjU1NdsPCenp6ZzNQUSUiz/++AOBgYHy5/fv38fAgQPRuHFjTJkyBT4+PvD09BQwQvqSefPmYdq0adDT00PJkiWxcuVKjBgxAnZ2dujYsaN8M0oi+r6YbFR+/y8N89tvv6FYsY9VbKtWrYr79+8LGBnl1bhx4zBixAjs378fUqkUN27cwLx58zB16lRMmjRJ6PAoB/b29rh161aOx2/dugU7O7sfGBEVVPPmzVG6dGnMnTsXISEhQodDRF+JSX8SnIeHBzZs2JClfd26dahSpYoAERERKQd/f380atRI/nzfvn2oXr06Nm7ciHHjxsHLywsHDhwQMEL6kh07dmDNmjU4c+YMjh49Ch8fH+zevRsSiUTo0IiKFCYblR9Xayi/QYMGYeHChZg+fTqSkpLQo0cPrF27FitXrkS3bt2EDo9y0LFjR/z22294//59lmNhYWGYPn06OnXqJEBklF9v377FyJEjcejQITg4OKBZs2Y4cOAA0tLShA6NiAqANf1JcP/++y8aN26MatWqyZNXf//9N27evImzZ8+ibt26AkdIRFQ4aWlp4dmzZ7CxsQEA1KlTBy1atMBvv/0GAHj16hVcXV0RHx8vZJiUC01NTTx//lw+hoBsXJ8/fw5ra2sBIyMqenbv3o1Zs2bhxYsXAGR1qmfPno2BAwcKHBnlRbly5eDp6Yl27dop1IP39vbG1q1bcefOHaFDpC+Ii4uDgYEBACApKQkJCQmwsLAAIKsLn1PNeBJWfHw8atasieDgYPTq1QtOTk4AgMePH2P37t2wsbGBr68v9PX1BY6U8uPOnTvYunUr9u7dCwDo0aMHBg4ciIoVKwocGRHlVbEvdyH6vmrXrg1fX18sWrQIBw4cgLa2Ntzc3LB582aUKVNG6PCIiAqt4sWLIygoCDY2NkhLS8OdO3cwe/Zs+fH4+Hioq6sLGCF9SUZGBrS0tBTa1NXVkZ6eLlBEREVTXFwcevbsiZ49ezLZqKT+v1ojJSVFvlpj79698PT0xKZNm4QOj/KgVatWOH/+PDQ1NaGjowMdHR0AwJMnT9CoUSO8efNG4AgpO/r6+vj3338xdepU7N+/X16/38jICL169cK8efOY8FdClStXhqWlJUxNTbFgwQJs2bIFa9asQc2aNbFu3TqUL19e6BCJ6As4058EI5FIsHjxYhw/fhxpaWlo2LAhZs2aBW1tbaFDIyJSCsOGDUNAQAAWLlyIo0ePYvv27Xj37h00NDQAyGatrlixAjdv3hQ4UsqJWCxGixYtoKmpKW/z8fFBw4YNoaurK287fPiwEOERFRl169aVJxs/xWSjcuFqDeXWokULiEQiHD9+XL4vw6NHj9CwYUN07doVK1euFDhC+hKpVIrIyEhIpVKYm5tDJBIJHRLlU3p6Oo4dO4YtW7bg3LlzqFq1KgYOHIju3bsjIiIC06dPx507d/Dw4UOhQyWiL2DSnwQzZ84czJo1C40bN4a2tjbOnDmD7t27Y8uWLUKHRkSkFCIjI9GxY0dcvXoVenp62L59Ozp06CA/3qhRI9SoUQPz5s0TMErKTf/+/fPUb+vWrd85EqKijclG5cfSMMovOTkZjRs3hrW1Nfbt24fAwEA0atQIPXv2xLJly4QOj74gOTkZUqlUvkLj9evXOHLkCFxcXNCsWTOBo6O8+PXXX7F3715IpVL07t0bgwYNQoUKFRT6hIWFwcrKivtPESkBJv1JMGXKlMGECRMwZMgQAMD58+fRqlUrJCcnQyzmHtNERHn14cMH6OnpQU1NTaE9Ojoaenp68pn/RESUPSYblR9Xa6iG2NhY1K9fH2XKlMHly5fRp08fLF68WOiwKA+aNm2Kjh07YujQoYiNjYWTkxM0NDQQGRmJZcuWYdiwYUKHSF/QqFEjDBo0CB07dszyt/T/MjIy8O+//6JevXo/ODoiyi8m/Ukw3LyQiIiIiAoLJhuVG1drKKe4uLgsbaGhoWjSpAlat26NBQsWyNv/v5KDCiczMzNcunQJ5cuXx6ZNm+Dt7Y27d+/izz//xO+//45Hjx4JHSIRUZHCpD8JRk1NDWFhYTA3N5e36evr4969eyhVqpSAkRERERGRqmOyUbVwtYZyEovF2dZ9/3+aQiQSQSqVQiQSITMz80eHR/mgo6ODx48fw9bWFl27dkX58uUxc+ZMhISEwMnJCUlJSUKHSNk4fvx4nvu2bdv2O0ZCRN8ak/4kGG5eSERERERCYbJR9XC1hvK5dOlSnvuynEjh5ubmhkGDBqFDhw6oUKECTp8+jZo1a+L27dto1aoVwsLChA6RspHX0sp8LyRSPkz6k2C4eSERERERCYXJRuXH1RqqIyMjA/Pnz8eAAQNY6lVJHTp0CD169EBmZiYaNmyIc+fOAQA8PT1x+fJl/PXXXwJHSERUtDDpT0RERERERRaTjcqLqzVUi76+Pu7fvw97e3uhQ6ECCgsLQ2hoKCpVqiT/3bxx4wYMDQ3h5OQkcHREREVLMaEDICIiIiIiEkqxYsWwePFi9OnTR+hQKJ8uXLggdAj0DTVs2BCXLl1i0l/JdOzYMU/9WLa3cPLy8sLgwYOhpaUFLy+vXPuOGjXqB0VFRN8Ck/5ERERERFSkMdmonP5fdomrNVRDixYtMGXKFNy/fx9VqlRR2OcN4CaihZWhoaHQIdBXWL58OXr27AktLS0sX748x34ikYhJfyIlw/I+RERERERUpK1btw6zZ89Gz549mWxUUiwNo/xy21CUJZqIiIjyh0l/IiIiIiIq0phsVH7t2rVDx44d0bdvX6FDISIiIhIcy/sQEREREVGRJpFIhA6BvhJLwxARfR2pVIpDhw7hwoULCA8Pz/LeyH0ZiJQLZ/oTERERERGRUuNqDdWQmJiIS5cuITg4GGlpaQrHWE+c6PsaPXo01q9fjwYNGqB48eIQiUQKx7du3SpQZERUEEz6ExERERFRkcdkI5Gw7t69i5YtWyIpKQmJiYkwMTFBZGQkdHR0YGFhgZcvXwodIpFKMzExwa5du9CyZUuhQyGib4DlfYiIiIiIqEj7UrKRSX+i72/s2LFo06YN1q1bB0NDQ/j6+kJdXR29evXC6NGjhQ6PSOUZGhrCwcFB6DCI6BvhTH8iIiIiIirS6tevj7Jly8qTjQEBAQrJxo4dOwodIuUBV2soNyMjI/j5+cHJyQlGRka4fv06XFxc4Ofnh759++Lx48dCh0ik0rZv347Tp09jy5Yt0NbWFjocIvpKnOlPRERERERFmr+/P9avXw+xWAw1NTWkpqbCwcEBixYtQt++fZn0VwJcraH81NXV5XszWFhYIDg4GC4uLjA0NERISIjA0RGpvq5du2Lv3r2wsLCAvb091NXVFY7fuXNHoMiIqCCY9CciIiIioiKNyUblx9Iwys/d3R03b95EmTJlUK9ePfz++++IjIzEzp07UaFCBaHDI1J5ffv2xe3bt9GrV69sN/IlIuXC8j5ERERERFSkNW3aFP369UOPHj3wyy+/4N69exg1ahR27tyJmJgY+Pn5CR0ifQFLwyi/W7duIT4+Hg0aNEB4eDj69OmDa9euoUyZMtiyZQsqVqwodIhEKk1XVxdnzpxBnTp1hA6FiL4BzvQnIiIiIqIibf78+YiPjwcAzJs3D3369MGwYcPkyUYq/LhaQ/lVrVpV/m8LCwucPn1awGiIih4bGxsYGBgIHQYRfSOc6U9ERERERERKjas1VEd4eDiePHkCAHB2doa5ubnAEREVDSdPnoS3tzfWrVsHe3t7ocMhoq/EpD8RERERERGYbFRmLA2j/OLj4zF8+HDs27cPmZmZAAA1NTX8/PPPWL16NQwNDQWOkEi1GRsbIykpCRkZGdDR0cmykW90dLRAkRFRQTDpT0RERERERRqTjUTC+/nnn3H37l14e3ujZs2aAIDr169j9OjRqFSpEvbt2ydwhESqbfv27bke79u37w+KhIi+BSb9iYiIiIioSGOyUXVwtYbyymkT0StXrqB58+ZITEwUKDIiIiLlw418iYiIiIioSDtx4kSWZGOzZs2wceNGNG/eXMDIKK+4WkP5mZqaZjtOhoaGMDY2FiAioqIrJSUFaWlpCm3c5JdIuYiFDoCIiIiIiEhITDYqv0GDBsHPzw8nTpxAbGwsYmNjceLECdy6dQtDhgwROjzKg+nTp2PcuHEICwuTt4WFhWHixImYMWOGgJERFQ2JiYkYOXIkLCwsoKurC2NjY4UHESkXlvchIiIiIqIibcOGDTh48CB27twJS0tLALJkY9++fdGxY0cmjZUAS8MoJ3d3d4hEIvnzZ8+eITU1Fba2tgCA4OBgaGpqokyZMrhz545QYRIVCSNGjMCFCxcwZ84c9O7dG6tXr8bbt2+xfv16LFiwAD179hQ6RCLKB5b3ISIiIiKiIie7ZKOtrW2WZGNERAST/kqAqzWUU/v27YUOgYj+4+Pjgx07dqB+/fro378/6tatC0dHR9jZ2WH37t1M+hMpGSb9iYiIiIioyGGyUbX8vzTM56s1WBqmcJs5c6bQIRDRf6Kjo+Hg4ABAVr8/OjoaAFCnTh0MGzZMyNCIqACY9CciIiIioiKHyUblx9UaqishIQESiUShjZuIEn1fDg4OCAoKgq2tLZydnXHgwAF4eHjAx8cHRkZGQodHRPnEpD8REREREdF/mGxUHlytoVqCgoIwcuRIXLx4ESkpKfJ2qVQKkUiEzMxMAaMjUl0vX76Evb09+vfvj4CAANSrVw9TpkxBmzZtsGrVKqSnp2PZsmVCh0lE+cSNfImIiIiIqEhjspFIeLVr14ZUKsXo0aNRvHhxhVUcAFCvXj2BIiNSbWpqaggNDYWFhQUA4Oeff4aXlxdSUlJw+/ZtODo6ws3NTeAoiSi/mPQnIiIiIqIijclG1cLVGspJT08Pt2/fhpOTk9ChEBUpYrEYYWFh8qS/vr4+AgIC5PX9iUg5sbwPEREREREVaQEBAUw2Kjmu1lB+1apVQ0hICH8PiYiIvgEm/YmIiIiIqEhjslH59erVC1KpFFu2bMl2tQYVfps2bcLQoUPx9u1bVKhQAerq6grHWV6E6PsQiURZ/mbybyiR8mPSn4iIiIiIijQmG5UfV2sov4iICLx48QL9+/eXt4lEIq7WIPrOpFIp+vXrB01NTQBASkoKhg4dCl1dXYV+hw8fFiI8IiogJv2JiIiIiKhIY7JR+XG1hvIbMGAA3N3dsXfvXq7WIPqB+vbtq/C8V69eAkVCRN8SN/IlIiIiIqIirVy5cnBxccGkSZOyTTba2dkJFBnl1YsXLzB06FD06tWLqzWUlK6uLgICAuDo6Ch0KEREREqPM/2JiIiIiKhIe/36NY4fP85koxLjag3l17BhQyb9iYiIvhEm/YmIiIiIqEhjslH5sTSM8mvTpg3Gjh2L+/fvw9XVNctqjbZt2woUGRERkfJheR8iIiIiIirSNmzYgLlz52LAgAFMNioploZRfmKxOMdjXK1BRESUP0z6ExERERFRkcZko/Jr06YN+vXrh06dOgkdChEREZHgWN6HiIiIiIiKNIlEInQI9JVYGkZ5tWzZEnv37oWhoSEAYMGCBRg6dCiMjIwAAFFRUahbty4ePnwoYJRERETKhTP9iYiIiIioSGKyUXVwtYbyUlNTQ2hoKCwsLAAABgYG8Pf3h4ODAwDg/fv3sLKy4hgSERHlQ86fjIiIiIiIiFTYmTNnkJqaKn8+f/58REdHy59nZGTgyZMnQoRG+SSRSHJ8MFlcuH0+D5HzEomIiL4ek/5ERERERFQkMdmo/Fq2bIkPHz7Iny9YsACxsbHy51FRUShXrpwAkREREREJh0l/IiIiIiIiUkpcraH8RCIRRCJRljYiIiIqOG7kS0RERERERRKTjcqPqzWUn1QqRb9+/aCpqQkASElJwdChQ6GrqwsACl/qEBERUd4w6U9EREREREUSk41Ewuvbt6/C8169emXp06dPnx8VDhERkUpg0p+IiIiIiIokJhuVH1drKL+tW7cKHQIREZHKEUm5/pGIiIiIiIiUkFgsRosWLeSrNXx8fNCwYUOF1RqnT59GZmamkGESERER/VBM+hMREREREZFS6t+/f576cTY5ERERFSVM+hMRERERERERERERqQix0AEQEREREREREREREdG3waQ/EREREREREREREZGKYNKfiIiIiIiIiIiIiEhFMOlPRERERERERERERKQimPQnIiIiIiIiIiIiIlIRTPoTEREREREREREREakIJv2JiIiIiIiIiIiIiFTE/wCVaX9N7L6yiwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 2000x1200 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(X.corr(),annot=True,cmap='RdYlGn',linewidths=0.2)\n",
    "fig=plt.gcf()\n",
    "fig.set_size_inches(20,12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "71df1e1d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T07:59:39.945742Z",
     "start_time": "2022-04-27T07:59:39.940838Z"
    }
   },
   "outputs": [],
   "source": [
    "# 在热图结果中：\n",
    "# 正相关：如果 A 的增加导致特征 B 的增加，那么这两个特征是正相关的。 完全正相关特征的值为 1。\n",
    "# 负相关：如果 A 的增加导致特征 B 的减少，那么这两个特征是负相关的。 那么完全负相关特征的值为-1。\n",
    "# 在我们的训练数据中有两个高度或完全相关的特征会导致多重共线性，因此最好将它们删除。\n",
    "\n",
    "# 在上述热图中，我们可以看到没有高度相关的特征。 在特征 Parch 和 SibSp 之间，相关性的最高值为 0.41。 因此无需删除任何功能。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "4abf5bb8",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T08:11:48.379479Z",
     "start_time": "2022-04-27T08:11:48.349643Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'FamilySize'}"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 如果上述方式还不够明显，我们也可以在代码的帮助下通过定义像 0.6 这样的阈值来做到这一点\n",
    "threshold=0.6\n",
    "# find and remove correlated features\n",
    "def correlation(dataset, threshold):\n",
    "    col_corr = set()  # Set of all the names of correlated columns\n",
    "    corr_matrix = dataset.corr()\n",
    "    for i in range(len(corr_matrix.columns)):\n",
    "        for j in range(i):\n",
    "            if corr_matrix.iloc[i, j] > threshold: # we are interested in absolute coeff value\n",
    "                colname = corr_matrix.columns[i]  # getting the name of column\n",
    "                col_corr.add(colname)\n",
    "    return col_corr\n",
    "\n",
    "correlation(X,threshold)\n",
    "# 如果输出的结果为set(),意味着没有高相关的特征，不需要去删除特征"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "97524fe6-712c-42c3-a627-06897146ee81",
   "metadata": {},
   "source": [
    "#### sklearn提供的方法进行特征选择"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "07adc676-fc62-470e-989e-7427442233be",
   "metadata": {},
   "source": [
    "sklean提供了一些特征选择的方法，比如说VarianceThreshold"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "b78643e6-6dd0-45ea-8cec-1c9f35b3467b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>IsChild</th>\n",
       "      <th>FamilySize</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.527669</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.976410</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.035965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.577094</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.307189</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.035965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.251478</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.893664</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.369951</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.002314</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.035965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.369951</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.879030</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>707</th>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.646142</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.386294</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.731412</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>708</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.182430</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.419978</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>709</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-0.734812</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.416419</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>710</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.251478</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.416419</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>711</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.162808</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.914500</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>712 rows × 10 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Pclass  Sex       Age  SibSp  Parch      Fare  Embarked_C  Embarked_S  \\\n",
       "0       3.0  0.0 -0.527669    1.0    0.0 -0.976410         0.0         1.0   \n",
       "1       1.0  1.0  0.577094    1.0    0.0  1.307189         1.0         0.0   \n",
       "2       3.0  1.0 -0.251478    0.0    0.0 -0.893664         0.0         1.0   \n",
       "3       1.0  1.0  0.369951    1.0    0.0  1.002314         0.0         1.0   \n",
       "4       3.0  0.0  0.369951    0.0    0.0 -0.879030         0.0         1.0   \n",
       "..      ...  ...       ...    ...    ...       ...         ...         ...   \n",
       "707     3.0  1.0  0.646142    0.0    5.0  0.386294         0.0         0.0   \n",
       "708     2.0  0.0 -0.182430    0.0    0.0 -0.419978         0.0         1.0   \n",
       "709     1.0  1.0 -0.734812    0.0    0.0  0.416419         0.0         1.0   \n",
       "710     1.0  0.0 -0.251478    0.0    0.0  0.416419         1.0         0.0   \n",
       "711     3.0  0.0  0.162808    0.0    0.0 -0.914500         0.0         0.0   \n",
       "\n",
       "     IsChild  FamilySize  \n",
       "0        0.0    0.035965  \n",
       "1        0.0    0.035965  \n",
       "2        0.0   -0.637897  \n",
       "3        0.0    0.035965  \n",
       "4        0.0   -0.637897  \n",
       "..       ...         ...  \n",
       "707      0.0    2.731412  \n",
       "708      0.0   -0.637897  \n",
       "709      0.0   -0.637897  \n",
       "710      0.0   -0.637897  \n",
       "711      0.0   -0.637897  \n",
       "\n",
       "[712 rows x 10 columns]"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# ===============================\n",
    "# 方差特征选择\n",
    "# ===============================\n",
    "from sklearn.feature_selection import VarianceThreshold\n",
    "# selector = VarianceThreshold(threshold=0.01)  # 去掉低方差特征\n",
    "selector = VarianceThreshold(threshold=0.1)  # 去掉低方差特征\n",
    "X_sel = selector.fit_transform(X)\n",
    "\n",
    "# 保留特征列名\n",
    "selected_cols = X.columns[selector.get_support()]\n",
    "X_sel = pd.DataFrame(X_sel, columns=selected_cols)\n",
    "\n",
    "X = X_sel\n",
    "\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "7fb74723-9efc-4c79-be6c-2c2364952394",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# from sklearn.feature_selection import VarianceThreshold\n",
    "# import numpy as np\n",
    "\n",
    "# # 创建示例数据集\n",
    "# # X = np.array([[0, 2, 0, 3],\n",
    "# #               [0, 1, 4, 3],\n",
    "# #               [0, 1, 1, 3],\n",
    "# #               [0, 1, 0, 3]])\n",
    "\n",
    "# # columns = X.columns\n",
    "\n",
    "# # 创建 VarianceThreshold 对象，设置方差阈值为0.1\n",
    "# selector = VarianceThreshold(threshold=0.1)\n",
    "\n",
    "# # dataframe转np.array\n",
    "\n",
    "# # X = X.values\n",
    "\n",
    "# # 进行特征选择\n",
    "# X_selected = selector.fit_transform(X)\n",
    "\n",
    "# # 将选择后的特征矩阵转换为 DataFrame\n",
    "# # X_selected_df = pd.DataFrame(X_selected, columns=columns[selector.get_support()])\n",
    "\n",
    "# # 设置 Pandas 显示选项，确保所有列都会显示\n",
    "# # pd.set_option('display.max_columns', None)\n",
    "\n",
    "# X = X_selected\n",
    "# # 查看选择后的特征矩阵\n",
    "# print(X)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d1beb9f0",
   "metadata": {},
   "source": [
    "# 模型训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "9c540127",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T08:31:13.646934Z",
     "start_time": "2022-04-27T08:31:13.630496Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'\\ntest_size:test样本的占比\\nrandom_state: 可以为整数、RandomState实例或None，默认为None\\n①若为None时，每次生成的数据都是随机，可能不一样\\n②若为整数时，每次生成的数据都相同\\n'"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split \n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)\n",
    "\n",
    "\"\"\"\n",
    "test_size:test样本的占比\n",
    "random_state: 可以为整数、RandomState实例或None，默认为None\n",
    "①若为None时，每次生成的数据都是随机，可能不一样\n",
    "②若为整数时，每次生成的数据都相同\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "792f9204-173f-4c32-9a71-095ba7fbf8d5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>IsChild</th>\n",
       "      <th>FamilySize</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>-1.701479</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.337139</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.383688</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.078859</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.979066</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>73</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.855666</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.563596</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>167</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.389573</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.002231</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>449</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.162808</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.902044</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>71</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.251478</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.035060</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.383688</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>106</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.458621</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.276474</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>270</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.060427</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.879030</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>435</th>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.494336</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.623694</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.709826</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>102</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.665764</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.002231</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>498 rows × 10 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Pclass  Sex       Age  SibSp  Parch      Fare  Embarked_C  Embarked_S  \\\n",
       "43      2.0  1.0 -1.701479    1.0    2.0  0.337139         0.0         1.0   \n",
       "42      3.0  0.0 -0.078859    0.0    0.0 -0.979066         1.0         0.0   \n",
       "73      1.0  0.0  2.855666    0.0    0.0  0.563596         1.0         0.0   \n",
       "167     3.0  0.0 -0.389573    0.0    0.0 -1.002231         0.0         1.0   \n",
       "449     3.0  0.0  0.162808    0.0    0.0 -0.902044         0.0         1.0   \n",
       "..      ...  ...       ...    ...    ...       ...         ...         ...   \n",
       "71      3.0  0.0 -0.251478    1.0    2.0  0.035060         0.0         1.0   \n",
       "106     2.0  0.0 -0.458621    0.0    0.0 -0.276474         1.0         0.0   \n",
       "270     3.0  0.0  1.060427    0.0    0.0 -0.879030         0.0         1.0   \n",
       "435     2.0  0.0 -1.494336    1.0    1.0  0.623694         0.0         1.0   \n",
       "102     3.0  0.0 -0.665764    0.0    0.0 -1.002231         0.0         1.0   \n",
       "\n",
       "     IsChild  FamilySize  \n",
       "43       1.0    1.383688  \n",
       "42       0.0   -0.637897  \n",
       "73       0.0   -0.637897  \n",
       "167      0.0   -0.637897  \n",
       "449      0.0   -0.637897  \n",
       "..       ...         ...  \n",
       "71       0.0    1.383688  \n",
       "106      0.0   -0.637897  \n",
       "270      0.0   -0.637897  \n",
       "435      1.0    0.709826  \n",
       "102      0.0   -0.637897  \n",
       "\n",
       "[498 rows x 10 columns]"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "f60ce6ea-b092-407d-99ee-2e6cb16ec261",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "43     1\n",
       "42     0\n",
       "73     0\n",
       "167    0\n",
       "449    1\n",
       "      ..\n",
       "71     0\n",
       "106    0\n",
       "270    1\n",
       "435    1\n",
       "102    0\n",
       "Name: Survived, Length: 498, dtype: int64"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "160db66e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T08:31:14.131650Z",
     "start_time": "2022-04-27T08:31:14.121353Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.metrics import accuracy_score,confusion_matrix, classification_report\n",
    "from sklearn.model_selection import KFold, cross_val_score, cross_val_predict ## Cross Validation"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e6fafddb",
   "metadata": {},
   "source": [
    "## 朴素贝叶斯Naive Bayes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "cb437505",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T08:33:19.078501Z",
     "start_time": "2022-04-27T08:33:18.227396Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--------GaussianNB Naive Bayes -------\n",
      "The accuracy Gaussian Naive Bayes Classifier is 77.1\n",
      "[[95 27]\n",
      " [22 70]]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAf8AAAG1CAYAAAD3Mv20AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAL19JREFUeJzt3XtcVOXex/3vIDAgCh4b8ISmImZZiqYoaSlpZqbJbbemReq+y73JUjry3JlWFuVue8ZDPaaZ2cHurVs7qIVlHlAQs6zcnhVPoJaIkowI6/mjx9lNgDLKKa/P+/Var5dzXdda129A/c611poZm2VZlgAAgDG8KrsAAABQsQh/AAAMQ/gDAGAYwh8AAMMQ/gAAGIbwBwDAMIQ/AACGIfwBADAM4Q8AgGEIf5Sp3NxcTZ48WXfccYccDod8fX1Vu3ZtRUZG6oUXXlBGRkal1Zaenq5evXqpVq1astlsstlsOnDgQLnP+/XXX8tms+nhhx8u97k81bRpU9fP4v333y9xXGpqqmuczWarwApLNmHCBNlsNi1YsKCySwH+dAh/lJmNGzeqRYsWevLJJ5Wamqobb7xR//Vf/6UuXbpo7969evnllxUWFqYvv/yywms7c+aM7r33Xn355Zdq3769HnroIcXGxqpGjRoVXktV9d5775XYt2jRojKda8GCBbLZbJowYUKZHhdA6XhXdgG4Nmzbtk09e/ZUXl6enn32WY0bN04BAQGu/sLCQi1btkzPPPOMDh8+XOH1paWl6ejRo3rwwQe1cOHCCp371ltv1Y4dOxQUFFSh83qiXbt2WrVqlU6ePKl69eq59V24cEEffvihbrjhBu3du1dOp7OSqnT32GOPafDgwQoJCansUoA/HVb+uGqWZenBBx9UXl6eJkyYoNdee80t+CXJy8tLAwcOVHp6ujp06FDhNV58wXH99ddX+NzVq1dXeHh4lQ6poUOHukL+j1avXq3jx49r2LBhlVBZyerVq6fw8PAq/aIKqLIs4Cp99tlnliSrUaNGVn5+vsf75+bmWi+99JLVpk0by8/PzwoMDLRuu+026/333y92fGhoqHXxr+5bb71l3XTTTZafn5/lcDisRx55xDp16pRr7P79+y1JxW6xsbGWZVnW+PHjLUnW/PnzLzvf723YsMHq37+/1aRJE8vX19dyOBxWx44drWeffdY6c+aMa9xXX33lNt/v5efnW9OnT7fat29vBQQEWAEBAVbHjh2tWbNmWRcuXCgyvnv37pYka//+/dbSpUutTp06WdWrV7dq165tDR482Dp06FAJP+XiXXxuu3btsmrWrGl17ty5yJghQ4ZYNpvNOnjwoGW324v9WXzyySfW8OHDrfDwcKtmzZpW9erVrbZt21qvvPKKlZeXV+xzKG67+Dv4/c/s2LFj1siRI62GDRta1apVs6ZMmWJZVvG/t08//dSSZF1//fVWTk6O27yFhYVWr169LEnWq6++6tHPCbjWcNofV+3TTz+VJA0aNEje3p79lTpz5ozuuOMOpaenq379+rrnnnuUm5urNWvWaN26dUpJSdG0adOK3feZZ57RtGnTdPvtt6tFixbasGGD3nzzTe3YsUNr166VzWZTjRo1FBsbqz179mjDhg26+eabdcstt0iSoqKirvg5r1ixQgMGDJBlWbr11lvVpUsXZWdna/fu3Xr99dc1atSoy95PUFBQoP79++uzzz5TYGCg7rzzTlmWpTVr1uhvf/ubvvjiC3388cfy8ip6gm7WrFmaPHmybrvtNt19993avHmzPvjgA6Wnp+u7776Tv7+/R8/H399fAwcO1DvvvKO9e/eqefPmkqSzZ8/qX//6l6KiotSkSZMS9x85cqTOnTunG2+8UW3bttXp06eVmpqq//3f/1VycrJWr16tatWqSZLuuusuXbhwocjvQ5JatGjhdtwTJ06oY8eOunDhgqKiopSXl6fq1auXWMfdd9+tuLg4JSUl6fHHH9f8+fNdfdOmTdPq1avVrVs3Pfvssx79fIBrTmW/+sCfX9euXS1J1rvvvuvxvo899pglybrjjjvcVmo7duywrrvuOkuStWLFCrd9Lq5Wg4ODrX//+9+u9hMnTlgtWrSwJFnJyclu+8yfP9+SZI0fP75IDVey8u/WrZslyfr444+LjE9NTXV7LiWt/N944w1LktWmTRsrMzPT1X706FGrVatWliRrxowZbvtcXDVXr17d2rhxo6s9NzfX6tKliyXJmjdvXrHP41LP7dChQ9YXX3xhSbJefPFFV//ChQstSdbcuXMty7JKXPkvW7bM+vXXX93acnJyrHvuuceSZL3zzjtufZf6fVjWf35mkqz77rvPOnfuXJExJf3efv31V6t169aWJGvJkiWWZVnW999/b9ntdiso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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#################################### Naive Bayes ########################\n",
    "# 调用朴素贝叶斯算法进行预测\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "g_model= GaussianNB()\n",
    "g_model.fit(X_train,y_train)\n",
    "prediction_gnb=g_model.predict(X_test)\n",
    "\n",
    "print('--------GaussianNB Naive Bayes -------')\n",
    "print('The accuracy Gaussian Naive Bayes Classifier is',round(accuracy_score(prediction_gnb,y_test)*100,2)) # metrics.accuracy_score进行准确率衡量\n",
    "\n",
    "# y_pred = cross_val_predict(model,X,y,cv=10)  \n",
    "\n",
    "# prediction_gnb=model.predict(X_test)\n",
    "sns.heatmap(confusion_matrix(y_test,prediction_gnb),annot=True,fmt='3.0f',cmap=\"Accent_r\") # heatmap显示混淆矩阵\n",
    "print(confusion_matrix(y_test,prediction_gnb))\n",
    "\n",
    "plt.title('Confusion Matrix', y=1, size=15);\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "7121d538-b38f-40a5-b162-df0ea276df2e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The cross validated score for Gaussian Naive Bayes classifier is: 78.53\n",
      "[[347  77]\n",
      " [ 76 212]]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgcAAAG1CAYAAABtS1fYAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAALwdJREFUeJzt3XlclWX+//H3AQQEWUJkcy9zyyUXVHJPwz1Ns7Fcy8nsizZJi8NMi0sTTTWamls9mrTUsvqOpmYqYaIpudDXNDN3o9KDmLKIemS5f3/080xXgoACh/L1fDzO4+G5ruu+7s8NKu9z3Qs2y7IsAQAA/H9uri4AAABULoQDAABgIBwAAAAD4QAAABgIBwAAwEA4AAAABsIBAAAwEA4AAICBcAAAAAyEA5SpnJwczZgxQ927d1doaKg8PT110003KSoqSs8995xSU1NdVltKSoqio6MVGBgom80mm82m48ePl/t+N23aJJvNpjFjxpT7vkqrXr16zq/Fe++9V+S4HTt2OMfZbLYKrLBoU6ZMkc1m06JFi1xdCvCHQzhAmdm2bZsaNGigJ554Qjt27FCzZs1077336o477tCRI0c0ffp0NWzYUJ999lmF15adna27775bn332mVq3bq1Ro0Zp9OjRqlatWoXXUlktXbq0yL4lS5aU6b4WLVokm82mKVOmlOm8AMqGh6sLwB/D7t271aNHD128eFGTJ0/Ws88+K19fX2d/QUGBVq5cqaefflo//vhjhde3c+dOnThxQiNHjtQ777xToftu166d9u/fr4CAgArdb2m0atVK69ev1+nTpxUcHGz05eXlafny5WratKmOHDkih8PhoipNEyZM0LBhwxQeHu7qUoA/HFYOcN0sy9LIkSN18eJFTZkyRS+99JIRDCTJzc1NgwcPVkpKitq2bVvhNV4OJDfffHOF79vHx0eNGzeu1D/Ehg8f7gwBv7VhwwadOnVKI0aMcEFlRQsODlbjxo0rdegCfrcs4DqtXbvWkmTVqlXLys3NLfX2OTk51rRp06zbbrvN8vb2tvz9/a3OnTtb7733XqHj69ata13+q/vmm29azZs3t7y9va3Q0FBr3Lhx1tmzZ51jjx07Zkkq9DV69GjLsizr+eeftyRZb7/9drH7+7WtW7daAwcOtOrUqWN5enpaoaGhVmRkpDV58mQrOzvbOe7zzz839vdrubm51uzZs63WrVtbvr6+lq+vrxUZGWnNmzfPysvLu2J8165dLUnWsWPHrBUrVljt27e3fHx8rJtuuskaNmyY9cMPPxTxVS7c5WM7ePCg5efnZ3Xo0OGKMffff79ls9ms77//3vLy8ir0a7FmzRrrwQcftBo3bmz5+flZPj4+VosWLax//OMf1sWLFws9hsJel78Hv/6anTx50ho7dqxVs2ZNy93d3Zo5c6ZlWYV/3z755BNLknXzzTdbWVlZxn4LCgqs6OhoS5L14osvlurrBNxoOK2A6/bJJ59IkoYOHSoPj9L9lcrOzlb37t2VkpKiGjVqqH///srJydHGjRu1ZcsWJScna9asWYVu+/TTT2vWrFnq1q2bGjRooK1bt+qNN97Q/v37lZSUJJvNpmrVqmn06NE6fPiwtm7dqpYtW+r222+XJHXq1Omaj3n16tUaNGiQLMtSu3btdMcddygjI0OHDh3SP//5T40fP77Y6xny8/M1cOBArV27Vv7+/rrrrrtkWZY2btyo//mf/1FCQoI++ugjublducA3b948zZgxQ507d1bfvn21fft2vf/++0pJSdHXX3+tqlWrlup4qlatqsGDB2vx4sU6cuSIbrnlFknSuXPn9PHHH6tTp06qU6dOkduPHTtWFy5cULNmzdSiRQtlZmZqx44d+vvf/67ExERt2LBB7u7ukqTevXsrLy/viu+HJDVo0MCYNz09XZGRkcrLy1OnTp108eJF+fj4FFlH3759FRMTo7lz5+qxxx7T22+/7eybNWuWNmzYoC5dumjy5Mml+voANxxXpxP8/nXs2NGSZL377rul3nbChAmWJKt79+7GJ739+/dbISEhliRr9erVxjaXP+2GhYVZ3333nbM9PT3datCggSXJSkxMNLZ5++23LUnW888/f0UN17Jy0KVLF0uS9dFHH10xfseOHcaxFLVy8Oqrr1qSrNtuu82y2+3O9hMnTliNGjWyJFlz5swxtrn8qdvHx8fatm2bsz0nJ8e64447LEnWW2+9VehxXO3YfvjhByshIcGSZE2dOtXZ/84771iSrIULF1qWZRW5crBy5Urr/PnzRltWVpbVv39/S5K1ePFio+9q3w/L+u/XTJJ1zz33WBcuXLhiTFHft/Pnz1tNmjSxJFkffvihZVmWtWfPHsvLy8sKCAiwjh8/XuzXBbjRcc0B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OAAAAAbCAQAAMBAO4DR37lzVq1dP3t7eat++vXbs2OHqkgCX2rx5swYMGKCIiAjZbDatXLnS1SUBFYJwAEnS8uXLFRsbq+eff15fffWVWrZsqV69eunUqVOuLg1wmZycHLVs2VJz5851dSlAheI5B5AktW/fXpGRkXr99dclSQUFBapdu7YmTpyov/71ry6uDnA9m82mFStWaNCgQa4uBSh3rBxAly5dUkpKinr27Olsc3NzU8+ePZWcnOzCygAArkA4gE6fPq38/HyFhoYa7aGhobLb7S6qCgDgKoQDAABgIBxAwcHBcnd3V1pamtGelpamsLAwF1UFAHAVwgHk6empNm3aKDEx0dlWUFCgxMRERUVFubAyAIAreLi6AFQOsbGxGj16tNq2bat27drptddeU05Ojh588EFXlwa4zLlz53T48GHn+2PHjmn37t0KCgpSnTp1XFgZUL64lRFOr7/+ul555RXZ7Xbdfvvtmj17ttq3b+/qsgCX2bRpk7p3735F++jRo7Vo0aKKLwioIIQDAABg4JoDAABgIBwAAAAD4QAAABgIBwAAwEA4AAAABsIBAAAwEA4AAICBcAAAAAyEAwAAYCAcAAAAA+EAAAAY/h93t10HWmOVeAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# K折交叉验证,得到更准缺的结果\n",
    "kfold = KFold(n_splits=10,shuffle=True,random_state=42) # split the data into 10 equal parts，这不是只是帮助理解K折交叉验证的原理，可删除\n",
    "# for train, test in kfold.split(X):\n",
    "#     print(train,test)\n",
    "#     print(\"--------\")\n",
    "#     print(np.array(X)[train], np.array(X)[test])\n",
    "#     print(\"*\"*50)\n",
    "\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "g_model= GaussianNB()\n",
    "\n",
    "result_gnb=cross_val_score(g_model,X,y,cv=10,scoring='accuracy')  # cv=10 表示10折\n",
    "\n",
    "print('The cross validated score for Gaussian Naive Bayes classifier is:',round(result_gnb.mean()*100,2))\n",
    "\n",
    "y_pred = cross_val_predict(g_model,X,y,cv=10)  \n",
    "\n",
    "sns.heatmap(confusion_matrix(y,y_pred),annot=True,fmt='3.0f',cmap=\"Accent_r\") # heatmap显示混淆矩阵\n",
    "print(confusion_matrix(y,y_pred))\n",
    "\n",
    "plt.title('Confusion Matrix', y=1, size=15);"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9a47418c",
   "metadata": {},
   "source": [
    "## 支持向量机SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "94e5c441",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T08:38:03.032720Z",
     "start_time": "2022-04-27T08:38:00.810242Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--------SVM -------\n",
      "The accuracy SVM is 81.78\n",
      "The cross validated score for SVM is: 81.46\n"
     ]
    },
    {
     "data": {
      "image/png": "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OcB1O3HihCSpatWqRRqXlZWl2bNny8PDQ9OnT5e/v7+7LSIiQuPGjZOkAlcOnnvuOdWrV8/9ukqVKhoxYoQkad26dUWqpaiOHTsmSeratetlbZGRkca5FGTKlCmSpNdff10hISHu/WFhYXr11VclFXzuY8aMUVRUlPu1r6+v4uLiJF37ud99990KCwsz3rUwb9482e129e/f/4pj+/bte9lqhb+/vyZNmiRJ+uyzz66pJrvdrqlTp8rHx6fQYypWrKj58+fL29tbjz76qA4cOKCBAwfK5XJp2rRpCg8Pv6ZagJsJ4QBlJiUlRefOnVPz5s0VERFxWfvgwYMlSd98843y8vIua4+Ojr5sX926dSVJqampxVytqUWLFpIu1rh58+Z867uSw4cP6/Dhw6patWq+59G7d28FBgZq//79cjqdl7WXxLl7eHjogQce0A8//KDNmzfL6XQqMTFRPXv21C233HLV8fv27dPkyZM1evRo/eUvf9FDDz2k5557zt12LZo3b65bb721yOOaNWum559/XidPnlTz5s21fft2PfDAAxo4cOA11QHcbLjnANetcuXKkv7723RhHT16VNLFB/HkJzAwUAEBAcrIyNCvv/7qPs4l1atXv2zMpd/YS/rtdi+++KK2b9+uJUuWaMmSJbrlllvUrl073XvvvRo0aNBVf9O9dO4F/RZrs9kUHh6uU6dO6ZdfflFoaKjRXlLnPmjQIL3++uuaP3++wsPDlZube9V3KViWpSeffFKTJk2SZVn59jl9+vQ11XOl+xyu5oknntBHH32klJQUhYWFafr06dc8F3CzYeUA1+3SDWXfffddsc99pafx5XejXknIb1WgRo0a2rJli5YvX67Ro0erRo0aWrJkiR555BE1adLEfanlepTFuTdr1kz169fXhx9+qPfee0+BgYHq1avXFcd89NFHev3111W9enUtXLhQv/zyiy5cuCDLstxBpaDQcDVFuZzwe7t27dKOHTskXbz0VRpPwwRuFIQDXLdLPzw++eQT5eTkFHpctWrVJEk//fRTvu0ZGRk6deqUKlasWKhl7Wvl7e0t6eKd+b+Xm5ub77K+JHl5eSk6OlpTpkzR999/rx9//FF33323+x0LV3K1c/9t27Usq1+PQYMGKS0tTVu3blX//v1lt9uv2H/RokWSpBkzZigmJkbVqlVThQoVJEkH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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#################################### SVM ########################\n",
    "from sklearn.svm import SVC, LinearSVC\n",
    "s_model = SVC()\n",
    "s_model.fit(X_train,y_train)\n",
    "prediction_svm=s_model.predict(X_test)\n",
    "\n",
    "print('--------SVM -------')\n",
    "print('The accuracy SVM is',round(accuracy_score(prediction_svm,y_test)*100,2))\n",
    "\n",
    "# kfold = KFold(n_splits=10,shuffle=True,random_state=42) # split the data into 10 equal parts\n",
    "\n",
    "result_svm=cross_val_score(s_model,X,y,cv=10,scoring='accuracy') \n",
    "\n",
    "print('The cross validated score for SVM is:',round(result_svm.mean()*100,2))\n",
    "\n",
    "y_pred = cross_val_predict(s_model,X,y,cv=10)\n",
    "sns.heatmap(confusion_matrix(y,y_pred),annot=True,fmt='3.0f',cmap=\"Accent_r\")\n",
    "plt.title('Confusion Matrix', y=1, size=15);"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fc197afe",
   "metadata": {},
   "source": [
    "## 神经网络KNN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "50163f9e",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T08:39:13.593858Z",
     "start_time": "2022-04-27T08:39:11.823313Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--------KNN -------\n",
      "The accuracy KNN Classifier is 76.17\n",
      "The cross validated score for KNN classifier is: 80.63\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgcAAAG1CAYAAABtS1fYAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMxtJREFUeJzt3XlYlXX+//HXAQUFOSAiiymYmiIpLmh2csM0d9MyJ8utxsls0CYpc/h+nVxaaKorU3OpuZy00hb9jpbmrommpEhDmJopWTbpwS1AUY8s9++Pfp7pk6CgbOXzcV3nujz3Z7nfN4u8zue+z31slmVZAgAA+P88KrsAAABQtRAOAACAgXAAAAAMhAMAAGAgHAAAAAPhAAAAGAgHAADAQDgAAAAGwgEAADAQDlCmcnNz9eqrr6pbt24KCQmRl5eXateuLYfDoWeeeUZHjhyptNpSU1PVs2dPBQQEyGazyWaz6bvvviv3/W7ZskU2m00PPfRQue+rtBo2bOj+Wrz33nvF9tu1a5e7n81mq8AKizd16lTZbDYtXLiwsksBfncIBygzO3bsUJMmTfTkk09q165datGihe677z7dcccdysjI0LPPPqumTZtq48aNFV7bmTNndPfdd2vjxo1q27atRo4cqVGjRqlWrVoVXktVtXjx4mLb3n333TLd18KFC2Wz2TR16tQynRdA2ahW2QXg9yEtLU3du3fXhQsXNGnSJP3tb3+Tr6+vu72wsFArVqzQ008/rf/85z8VXl9KSoqOHj2qESNG6O23367Qfd92223av3+//P39K3S/pdGmTRutW7dOJ0+eVFBQkNGWn5+vDz74QFFRUcrIyJDL5aqkKk3jxo3T0KFDFRYWVtmlAL87rBzgulmWpREjRujChQuaOnWqXnzxRSMYSJKHh4fuvfdepaamql27dhVe46VA0qhRowrft4+PjyIjI6v0H7Fhw4a5Q8CvrV+/XsePH9fw4cMrobLiBQUFKTIyskqHLuA3ywKu0+rVqy1JVv369a28vLxSj8/NzbWmT59u3XrrrVaNGjUsu91ude7c2XrvvfeK7B8REWFd+tH9xz/+YbVs2dKqUaOGFRISYo0ZM8b66aef3H0PHz5sSSryMWrUKMuyLGvKlCmWJOutt9666v5+afv27dbAgQOt8PBwy8vLywoJCbHat29vTZo0yTpz5oy736effmrs75fy8vKsWbNmWW3btrV8fX0tX19fq3379tbcuXOt/Pz8y/p37drVkmQdPnzYWr58udWhQwfLx8fHql27tjV06FDrhx9+KOarXLRLx/bNN99Yfn5+1u23335ZnwceeMCy2WzW999/b3l7exf5tVi1apX18MMPW5GRkZafn5/l4+NjRUdHW88//7x14cKFIo+hqMel78Evv2bHjh2zRo8ebd10002Wp6enNWPGDMuyiv6+ffLJJ5Ykq1GjRlZOTo6x38LCQqtnz56WJOuFF14o1dcJuNFwWgHX7ZNPPpEkDRkyRNWqle5H6syZM+rWrZtSU1NVt25d9e/fX7m5udq8ebO2bdum5ORkzZw5s8ixTz/9tGbOnKnY2Fg1adJE27dv15tvvqn9+/crKSlJNptNtWrV0qhRo3To0CFt375drVq1UuvWrSVJnTp1uuZjXrlypQYNGiTLsnTbbbfpjjvuUFZWlg4ePKi///3vGjt27FWvZygoKNDAgQO1evVq2e123XXXXbIsS5s3b9af//xnbdiwQcuWLZOHx+ULfHPnztWrr76qzp07q2/fvtq5c6fef/99paam6ssvv1TNmjVLdTw1a9bUvffeq0WLFikjI0ONGzeWJJ09e1YfffSROnXqpPDw8GLHjx49WufPn1eLFi0UHR2t7Oxs7dq1S//7v/+rTZs2af369fL09JQk9e7dW/n5+Zd9PySpSZMmxrwnTpxQ+/btlZ+fr06dOunChQvy8fEpto6+ffsqLi5Oc+bM0eOPP6633nrL3TZz5kytX79eXbp00aRJk0r19QFuOJWdTvDb17FjR0uS9c4775R67Lhx4yxJVrdu3YxXevv377eCg4MtSdbKlSuNMZde7YaGhlpff/21e/uJEyesJk2aWJKsTZs2GWPeeustS5I1ZcqUy2q4lpWDLl26WJKsZcuWXdZ/165dxrEUt3LwyiuvWJKsW2+91XI6ne7tR48etZo1a2ZJsmbPnm2MufSq28fHx9qxY4d7e25urnXHHXdYkqwFCxYUeRxXOrYffvjB2rBhgyXJmjZtmrv97bfftiRZb7zxhmVZVrErBytWrLDOnTtnbMvJybH69+9vSbIWLVpktF3p+2FZ//2aSbLuuece6/z585f1Ke77du7cOat58+aWJGvp0qWWZVlWenq65e3tbfn7+1vffffdVb8u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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#################################### KNN ########################\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "k_model =  KNeighborsClassifier()\n",
    "k_model.fit(X_train,y_train)\n",
    "prediction_knn=k_model.predict(X_test)\n",
    "\n",
    "print('--------KNN -------')\n",
    "print('The accuracy KNN Classifier is',round(accuracy_score(prediction_knn,y_test)*100,2))\n",
    "\n",
    "kfold = KFold(n_splits=10,shuffle=True, random_state=42) # split the data into 8 equal parts\n",
    "\n",
    "result_knn=cross_val_score(k_model,X,y,cv=10,scoring='accuracy')\n",
    "\n",
    "print('The cross validated score for KNN classifier is:',round(result_knn.mean()*100,2))\n",
    "\n",
    "y_pred = cross_val_predict(k_model,X,y,cv=10)\n",
    "sns.heatmap(confusion_matrix(y,y_pred),annot=True,fmt='3.0f',cmap=\"Accent_r\")\n",
    "plt.title('Confusion Matrix', y=1, size=15);"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b151affa",
   "metadata": {},
   "source": [
    "## 逻辑回归Logistic Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "ee6be172",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T08:40:14.836122Z",
     "start_time": "2022-04-27T08:40:12.591162Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--------Logistic Regression -------\n",
      "The accuracy Logistic Regression is 80.84\n",
      "The cross validated score for Logistic Regression is: 80.48\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#################################### Logistic Regression ########################\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "l_model =  LogisticRegression(penalty='l2', C=1.0, solver='lbfgs')\n",
    "l_model.fit(X_train,y_train)\n",
    "prediction_lr=l_model.predict(X_test)\n",
    "\n",
    "print('--------Logistic Regression -------')\n",
    "print('The accuracy Logistic Regression is',round(accuracy_score(prediction_lr,y_test)*100,2))\n",
    "\n",
    "# kfold = KFold(n_splits=10,shuffle=True, random_state=42) # split the data into 10 equal parts\n",
    "\n",
    "result_lr=cross_val_score(l_model,X,y,cv=10,scoring='accuracy')\n",
    "\n",
    "print('The cross validated score for Logistic Regression is:',round(result_lr.mean()*100,2))\n",
    "\n",
    "y_pred = cross_val_predict(l_model,X,y,cv=10)\n",
    "sns.heatmap(confusion_matrix(y,y_pred),annot=True,fmt='3.0f',cmap=\"Accent_r\")\n",
    "plt.title('Confusion Matrix', y=1, size=15);"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5e207e4f",
   "metadata": {},
   "source": [
    "## 随机森林 Random Forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "d4e3c336",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T08:43:46.283748Z",
     "start_time": "2022-04-27T08:42:24.831619Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--------Random Forest Classifier -------\n",
      "The accuracy Random Forest Classifier  is 81.78\n",
      "The cross validated score for Random Forest Classifier is: 82.04\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgcAAAG1CAYAAABtS1fYAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAANTRJREFUeJzt3XlYVeX+///XBmUjCBsRmVKxNEVUHNCUnNMc82iZ52M5VR5ND9pJGjycj6csK8r6Zmpq1tfSHMrse6w00xxySFGRc0jTMjULSzc4gqJsGdbvD3/u052goEzV83Fd67rkvu91r/dikNe+19oLm2VZlgAAAP5/HhVdAAAAqFwIBwAAwEA4AAAABsIBAAAwEA4AAICBcAAAAAyEAwAAYCAcAAAAA+EAAAAYCAcoVdnZ2Xr11VfVtWtXhYSEyMvLSzVq1FBsbKyeeuoppaWlVVhtKSkp6tGjhwICAmSz2WSz2fTDDz+U+XE3btwom82mBx54oMyPVVL16tVzfy7ee++9Isft3LnTPc5ms5VjhUWbPHmybDab5s+fX9GlAL87hAOUmm3btqlBgwZ67LHHtHPnTjVt2lT33nuvbr/9dh06dEhTpkxRw4YNtW7dunKv7ezZs/rTn/6kdevWqVWrVho+fLhGjBih6tWrl3stldXixYuL7Fu0aFGpHmv+/Pmy2WyaPHlyqc4LoHRUqegC8PuQmpqqbt26KScnRxMnTtQ///lP+fr6uvsLCgr00Ucf6cknn9RPP/1U7vUlJyfr6NGjGjZsmN59991yPfZtt92mb775Rg6Ho1yPWxItW7bUmjVrdOLECQUFBRl9eXl5Wrp0qaKionTo0CG5XK4KqtI0btw4DR48WGFhYRVdCvC7w8oBbphlWRo2bJhycnI0efJkvfjii0YwkCQPDw/dc889SklJUevWrcu9xsuB5JZbbin3Y/v4+CgyMrJS/xIbMmSIOwT82ueff66MjAwNHTq0AiorWlBQkCIjIyt16AJ+syzgBq1atcqSZNWuXdvKzc0t8f7Z2dnWs88+azVp0sTy9va2/P39rY4dO1rvvfdeoeMjIiKsy9+6b731ltWsWTPL29vbCgkJsUaPHm2dPn3aPfbw4cOWpEK3ESNGWJZlWU8//bQlyXrnnXeuebxf2rp1q9W/f3+rbt26lpeXlxUSEmK1adPGmjhxonX27Fn3uC+++MI43i/l5uZaM2bMsFq1amX5+vpavr6+Vps2bazZs2dbeXl5V4zv3LmzJck6fPiwtXz5cqtt27aWj4+PVaNGDWvw4MHWkSNHivgsF+7yuX333XeWn5+f1a5duyvG3HfffZbNZrN+/PFHy263F/q5WLlypfXggw9akZGRlp+fn+Xj42NFR0dbzz//vJWTk1PoORS2Xf4a/PJzduzYMWvkyJHWTTfdZHl6elrTpk2zLKvwr9unn35qSbJuueUWKysryzhuQUGB1aNHD0uS9cILL5To8wT80XBZATfs008/lSQNGjRIVaqU7Fvq7Nmz6tq1q1JSUlSrVi3dddddys7O1oYNG7RlyxYlJSVp+vTphe775JNPavr06erSpYsaNGigrVu36s0339Q333yjTZs2yWazqXr16hoxYoQOHjyorVu3qnnz5mrRooUkqUOHDtd9zitWrNCAAQNkWZZuu+023X777Tpz5owOHDigl156SWPGjLnm/Qz5+fnq37+/Vq1aJX9/f915552yLEsbNmzQX//6V61du1YffvihPDyuXOCbPXu2Xn31VXXs2FF9+vTRjh079P777yslJUVfffWVqlWrVqLzqVatmu655x4tWLBAhw4dUv369SVJ586d08cff6wOHTqobt26Re4/cuRIXbhwQU2bNlV0dLQyMzO1c+dO/e///q/Wr1+vzz//XJ6enpKkXr16KS8v74qvhyQ1aNDAmPf48eNq06aN8vLy1KFDB+Xk5MjHx6fIOvr06aO4uDjNmjVLjzzyiN555x133/Tp0/X555+rU6dOmjhxYok+P8AfTkWnE/z2tW/f3pJkLVy4sMT7jhs3zpJkde3a1Xil980331jBwcGWJGvFihXGPpdf7YaGhlrffvutu/348eNWgwYNLEnW+vXrjX3eeecdS5L19NNPX1HD9awcdOrUyZJkffjhh1eM37lzp3EuRa0cvPLKK5Ykq0mTJpbT6XS3Hz161GrUqJElyZo5c6axz+VX3T4+Pta2bdvc7dnZ2dbtt99uSbLmzZtX6Hlc7dyOHDlirV271pJkPfPMM+7+d99915JkzZ0717Isq8iVg48++sg6f/680ZaVlWXdddddliRrwYIFRt/Vvh6W9d/PmSTr7rvvti5cuHDFmKK+bufPn7caN25sSbKWLVtmWZZl7d6927Lb7ZbD4bB++OGH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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Random Forests\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "r_model = RandomForestClassifier(n_estimators=800,\n",
    "                             min_samples_split=12,\n",
    "                             # max_features='auto',\n",
    "                            max_features='sqrt',\n",
    "                             oob_score=True,\n",
    "                             random_state=1,n_jobs=-1)\n",
    "\n",
    "r_model.fit(X_train,y_train)\n",
    "prediction_rf=r_model.predict(X_test)\n",
    "\n",
    "print('--------Random Forest Classifier -------')\n",
    "print('The accuracy Random Forest Classifier  is',round(accuracy_score(prediction_rf,y_test)*100,2))\n",
    "\n",
    "kfold = KFold(n_splits=10,shuffle=True, random_state=42) # split the data into 10 equal parts\n",
    "\n",
    "result_rf=cross_val_score(r_model,X,y,cv=10,scoring='accuracy')\n",
    "\n",
    "print('The cross validated score for Random Forest Classifier is:',round(result_rf.mean()*100,2))\n",
    "\n",
    "y_pred = cross_val_predict(r_model,X,y,cv=10)\n",
    "sns.heatmap(confusion_matrix(y,y_pred),annot=True,fmt='3.0f',cmap=\"Accent_r\")\n",
    "plt.title('Confusion Matrix', y=1, size=15);"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f1d4b6b4",
   "metadata": {},
   "source": [
    "## 自适应提升ADA Boost"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "ca6de31d",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T08:45:13.955909Z",
     "start_time": "2022-04-27T08:45:08.089739Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--------ADA Boost -------\n",
      "The accuracy ADA Boost Classifier is 76.17\n",
      "The cross validated score for ADA Boost classifier is: 80.9\n"
     ]
    },
    {
     "data": {
      "image/png": "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dNXvC3Cz454DXLdTp05JkurUqVOmcfn5+Xrrrbfk4eGh+fPny9fX193WvHlzTZs2TZJKXDl49tln1axZM/froKAgjR8/XpK0ZcuWMtVSVidOnJAk9erV67K2Tp06GedSkjlz5kiSXn31VYWEhLj3h4WF6eWXX5ZU8rlPnjxZkZGR7tfe3t6Ki4uTdO3nfs899ygsLMx418KSJUtkt9s1dOjQK44dNGjQZasVvr6+mjVrliTpo48+uqaa7Ha75s6dqxo1apR6TM2aNbV06VJ5eXnp0UcfVWZmpoYPHy6Xy6V58+apQYMG11QLcDMhHKDSpKWl6aefflL79u3VvHnzy9pHjhwpSdq2bZuKiooua4+Ojr5sX9OmTSVJx44dK+dqTR06dJD0c42pqanF1nclhw8f1uHDh1WnTp1iz6N///7y9/fXwYMH5XQ6L2uviHP38PDQQw89pG+++UapqalyOp1KSkpSTEyMateufdXxBw4c0OzZszVp0iT96U9/0pgxY/Tss8+6265F+/btdcstt5R5XLt27fTcc8/p9OnTat++vXbv3q2HHnpIw4cPv6Y6gJsN9xzgugUGBkr671/TpXX06FFJPz+Ipzj+/v7y8/NTTk6OfvzxR/dxLqlXr95lYy79xV7Rb7d74YUXtHv3bq1cuVIrV65U7dq11bVrVw0cOFAjRoy46l+6l869pL9ibTabGjRooDNnzuiHH35QaGio0V5R5z5ixAi9+uqrWrp0qRo0aKDCwsKrvkvBsiw9+eSTmjVrlizLKrbP2bNnr6meK93ncDVPPPGEPvjgA6WlpSksLEzz58+/5rmAmw0rB7hul24o27VrV7nPfaWn8RV3o15FKG5VoH79+vriiy+0bt06TZo0SfXr19fKlSv1yCOPqHXr1u5LLdejMs69Xbt2atGihd5//32988478vf3V79+/a445oMPPtCrr76qevXq6cMPP9QPP/ygCxcuyLIsd1ApKTRcTVkuJ/za3r179dVXX0n6+dLXjXgaJvB7QTjAdbv0y2PZsmUqKCgo9bi6detKkr777rti23NycnTmzBnVrFmzVMva18rLy0vSz3fm/1phYWGxy/qSVK1aNUVHR2vOnDn68ssvdejQId1zzz3udyxcydXO/Zdt17Ksfj1GjBih48ePKz09XUOHDpXdbr9i/+XLl0uSFixYoCFDhqhu3bqqXr26JOnbb7+t8HqL43K53PcZjBgxQhcuXNDw4cN1/vz5SqkH+K0hHOC69enTR7fffru+//57Pf/881fsm5ubqz179kj6+bp9zZo1lZaWVuw16UuP7O3SpUuFrhJcejjRN998c1nbpk2bdPHixVLN06BBA/db5C79xVqS8PBwhYeH68SJE0pKSrqs/ZNPPtGPP/6oJk2aXHZJoaI9/PDDCgoKUmBgoEaNGnXV/j/++KOk4i91/Otf/yp2zKVAVpYwWRbx8fHKyMjQsGHD9O6772rUqFHau3evpkyZUiHHA35vCAe4bjabTUuWLFGNGjU0Y8YMxcfHKz8/3+hjWZY+/vhjdezYUampqZIkHx8f/elPf1JRUZFiY2ONMd98842ee+45SdJjjz1WofV369ZN0s9h5JdLz1lZWSUee9asWcWuKKxevVrSz5cdrmbSpEmSpLi4OON+DafT6f4l9pe//KV0J1GOGjZsqBMnTujkyZOlehbEpRsh33jjDePywdatW93vuvi1Sysn+/fvL4eKTUlJSXrttddUv359LViwQJI0d+5cNWzYUP/4xz+0du3acj8m8LtTme+jxO/LZ599ZoWEhLjfhx8VFWU9/PDDVr9+/dz7a9SoYW3YsME9Jjc31+rQoYMlyQoODraGDh1qxcTEWDVq1LAkWY899thlxynpiYWWVfIzBa72vvpRo0ZZkiw/Pz9rwIABVlRUlOXj42MNHTq02OP5+flZHh4eVrt27aw//OEP1tChQ62mTZtakqyAgADrm2++uWpNBQUFVt++fd3Hve+++6zBgwdbvr6+liRr8ODBVmFhoTHml09I/LVLT4Ps3r17sedYnF8+56A0invOwf79+y0fHx9LkhUREWENGzbMuvvuuy2bzWY9+eSTliSrQYMGxpiffvrJ/RyL7t27W3/84x+tsWPHWtu2bbMs68pPlbykuOccnD592rrlllssDw8Pa9OmTUb/rVu3Wh4eHlZoaKh14sSJUp0vcLNi5QDlpkuXLjp48KBeeeUVderUSRkZGfrXv/6lbdu2qWHDhpo+fboOHDigqKgo9xhfX18lJyfrmWeeUVBQkD7++GNt3bpVHTt2VGJiYonv8y9vb775pv7617/K4XBo3bp1OnTokOLj40v8GOO5c+dq2LBhOnfunNasWaO1a9eqWrVqiouLU0ZGhm677bar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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.ensemble import AdaBoostClassifier\n",
    "a_model= AdaBoostClassifier()\n",
    "\n",
    "a_model.fit(X_train,y_train)\n",
    "prediction_ada=a_model.predict(X_test)\n",
    "\n",
    "print('--------ADA Boost -------')\n",
    "print('The accuracy ADA Boost Classifier is',round(accuracy_score(prediction_ada,y_test)*100,2))\n",
    "\n",
    "kfold = KFold(n_splits=10,shuffle=True, random_state=42) # split the data into 10 equal parts\n",
    "\n",
    "result_ada=cross_val_score(a_model,X,y,cv=10,scoring='accuracy')\n",
    "\n",
    "print('The cross validated score for ADA Boost classifier is:',round(result_ada.mean()*100,2))\n",
    "\n",
    "y_pred = cross_val_predict(a_model,X,y,cv=10)\n",
    "sns.heatmap(confusion_matrix(y,y_pred),annot=True,fmt='3.0f',cmap=\"Accent_r\")\n",
    "plt.title('Confusion Matrix', y=1, size=15);"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d7a668f4",
   "metadata": {},
   "source": [
    "## 以上几种算法模型的评估对比"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "32744c08",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2022-04-27T08:46:16.628995Z",
     "start_time": "2022-04-27T08:46:16.599733Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Model</th>\n",
       "      <th>Score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Random Forest</td>\n",
       "      <td>0.820383</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Support Vector Machines</td>\n",
       "      <td>0.814613</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>AdaBoostClassifier</td>\n",
       "      <td>0.809038</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>KNN</td>\n",
       "      <td>0.806318</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Logistic Regression</td>\n",
       "      <td>0.804832</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Naive Bayes</td>\n",
       "      <td>0.785290</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     Model     Score\n",
       "3            Random Forest  0.820383\n",
       "0  Support Vector Machines  0.814613\n",
       "5       AdaBoostClassifier  0.809038\n",
       "1                      KNN  0.806318\n",
       "2      Logistic Regression  0.804832\n",
       "4              Naive Bayes  0.785290"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "models = pd.DataFrame({\n",
    "    'Model': ['Support Vector Machines', 'KNN', 'Logistic Regression', \n",
    "              'Random Forest', 'Naive Bayes', 'AdaBoostClassifier'],\n",
    "    'Score': [result_svm.mean(), result_knn.mean(), result_lr.mean(), \n",
    "              result_rf.mean(), result_gnb.mean(), result_ada.mean()]})\n",
    "models.sort_values(by='Score',ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d0f1d7cc-284c-40d2-b137-c8c647c0817c",
   "metadata": {},
   "source": [
    "## 使用模型进行预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "b575b11d-d363-4b30-88cd-0eb8bdb6b494",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>IsChild</th>\n",
       "      <th>FamilySize</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.527669</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.976410</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>0.035965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.577094</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1.307189</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0</td>\n",
       "      <td>0.035965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.251478</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.893664</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.369951</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1.002314</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>0.035965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.369951</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.879030</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>707</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0.646142</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0.386294</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>0</td>\n",
       "      <td>2.731412</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>708</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.182430</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.419978</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>709</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.734812</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.416419</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>710</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.251478</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.416419</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>711</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0.162808</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.914500</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.637897</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>712 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Survived  Pclass  Sex       Age  SibSp  Parch      Fare  Embarked_C  \\\n",
       "0           0       3    0 -0.527669      1      0 -0.976410       False   \n",
       "1           1       1    1  0.577094      1      0  1.307189        True   \n",
       "2           1       3    1 -0.251478      0      0 -0.893664       False   \n",
       "3           1       1    1  0.369951      1      0  1.002314       False   \n",
       "4           0       3    0  0.369951      0      0 -0.879030       False   \n",
       "..        ...     ...  ...       ...    ...    ...       ...         ...   \n",
       "707         0       3    1  0.646142      0      5  0.386294       False   \n",
       "708         0       2    0 -0.182430      0      0 -0.419978       False   \n",
       "709         1       1    1 -0.734812      0      0  0.416419       False   \n",
       "710         1       1    0 -0.251478      0      0  0.416419        True   \n",
       "711         0       3    0  0.162808      0      0 -0.914500       False   \n",
       "\n",
       "     Embarked_Q  Embarked_S  IsChild  FamilySize  \n",
       "0         False        True        0    0.035965  \n",
       "1         False       False        0    0.035965  \n",
       "2         False        True        0   -0.637897  \n",
       "3         False        True        0    0.035965  \n",
       "4         False        True        0   -0.637897  \n",
       "..          ...         ...      ...         ...  \n",
       "707        True       False        0    2.731412  \n",
       "708       False        True        0   -0.637897  \n",
       "709       False        True        0   -0.637897  \n",
       "710       False       False        0   -0.637897  \n",
       "711        True       False        0   -0.637897  \n",
       "\n",
       "[712 rows x 12 columns]"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_processed"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "20cf6e31-ac32-4fea-8c50-9611b7eebef8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked_C',\n",
       "       'Embarked_S', 'IsChild', 'FamilySize'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "selected_cols"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "3c572e8c-3ca0-43dd-ad58-05d5d4417e87",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predictions on unlabeled data: [0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 1 0 1 0 0\n",
      " 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 1 1 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 0 1\n",
      " 1 0 0 1 0 1 1 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0\n",
      " 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0\n",
      " 1 0 1 0 0 1 0 0 1 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 1\n",
      " 0 1 0 0 0 1 1 0 1 0 1 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1\n",
      " 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0\n",
      " 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1\n",
      " 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1\n",
      " 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0\n",
      " 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 1 1\n",
      " 1 0 0 1 0 0 0]\n"
     ]
    }
   ],
   "source": [
    "# ===============================\n",
    "# 未标注数据预测\n",
    "# ===============================\n",
    "# 读取未标注数据\n",
    "df_unLabeled_data = pd.read_csv('DataSet/UnlabeledData.csv')\n",
    "\n",
    "# 如果有额外的预处理函数\n",
    "# df_unLabeled = preprocess_data(df_unLabeled_data)\n",
    "df_unLabeled = df_unLabeled_data.copy()  # 直接使用原数据\n",
    "\n",
    "# 特征工程（复用训练集 scaler）\n",
    "test_processed, _ = titanic_feature_engineering(df_unLabeled, onehot_pclass=False, scaler=scaler, is_train=False)\n",
    "\n",
    "# 保持训练集特征列一致\n",
    "test_processed = test_processed[selected_cols]\n",
    "\n",
    "# 方差选择（只 transform，不 fit）\n",
    "# X_test_sel = selector.transform(test_processed)\n",
    "\n",
    "# 预测\n",
    "y_pred_unlabeled = r_model.predict(test_processed)\n",
    "print(\"Predictions on unlabeled data:\", y_pred_unlabeled)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "02fe77b8-d18e-44cd-a9e1-b915e09d6181",
   "metadata": {},
   "outputs": [],
   "source": [
    "submission = pd.DataFrame({\n",
    "        \"PassengerId\": df_unLabeled_data[\"PassengerId\"],\n",
    "        \"Survived\": y_pred_unlabeled})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "ae444fec-df73-4c59-aa6f-65562d0e45e1",
   "metadata": {},
   "outputs": [],
   "source": [
    "submission.to_csv('Submission.csv', index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1beb797f-87ef-419a-9060-4151c5351596",
   "metadata": {},
   "source": [
    "# 超参寻优"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "065d3243-95f7-4ff1-b96b-ff80f8b90598",
   "metadata": {},
   "source": [
    "## 超参数"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0eb78bd5-a41c-4300-8bea-75ac96b198e3",
   "metadata": {},
   "source": [
    "超参数（hyperparameter）是机器学习或深度学习模型中在训练之前需要设定的参数，它们不是通过训练数据直接学习到的，而是由我们人为指定的，用来控制模型训练的过程或结构。\n",
    "\n",
    "可以把它想象成“模型的外部设置”，与模型在训练中学到的参数（比如权重、偏置）不同，参数是通过数据优化得到的，而超参数是在训练前定义的。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "48090b77-b069-4098-a4c5-f2128c505ae5",
   "metadata": {},
   "source": [
    "## sklearn.ensemble.RandomForestClassifier的超参数"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "79046898-3f47-4467-b123-5c602b5863f2",
   "metadata": {},
   "source": [
    "`RandomForestClassifier` 的完整超参数列表：\n",
    "\n",
    "------\n",
    "\n",
    "1️⃣ 树相关参数\n",
    "\n",
    "| 参数                       | 默认值 | 作用                   | 调参建议                                              |\n",
    "| -------------------------- | ------ | ---------------------- | ----------------------------------------------------- |\n",
    "| `n_estimators`             | 100    | 随机森林中树的数量     | 越多越稳定，但训练时间长，常用 `[100, 300, 500, 800]` |\n",
    "| `max_depth`                | None   | 单棵树最大深度         | 控制过拟合，小数据集可尝试 `[5, 7, 10, 12]`           |\n",
    "| `max_features`             | 'sqrt' | 每次分裂考虑的特征数量 | 分类问题 `'sqrt'` 或 `'log2'`，可网格搜索             |\n",
    "| `max_leaf_nodes`           | None   | 最大叶子节点数         | 控制树复杂度，可限制过拟合                            |\n",
    "| `min_samples_split`        | 2      | 内部节点最小分裂样本数 | `[2,5,10]` 常用                                       |\n",
    "| `min_samples_leaf`         | 1      | 叶子节点最少样本数     | `[1,2,4]` 常用                                        |\n",
    "| `min_weight_fraction_leaf` | 0.0    | 权重最小叶子样本比例   | 一般用默认                                            |\n",
    "\n",
    "------\n",
    "\n",
    "2️⃣ 分裂标准\n",
    "\n",
    "| 参数                    | 默认值 | 作用                       | 调参建议                                      |\n",
    "| ----------------------- | ------ | -------------------------- | --------------------------------------------- |\n",
    "| `criterion`             | 'gini' | 分裂质量指标               | `'gini'` 或 `'entropy'`，分类问题可试不同指标 |\n",
    "| `min_impurity_decrease` | 0.0    | 节点分裂所需的最小纯度下降 | 调小可以生成更多分支                          |\n",
    "\n",
    "------\n",
    "\n",
    "3️⃣ 样本/采样\n",
    "\n",
    "| 参数          | 默认值 | 作用                       | 调参建议                  |\n",
    "| ------------- | ------ | -------------------------- | ------------------------- |\n",
    "| `bootstrap`   | True   | 是否有放回采样             | 保留默认，通常不调        |\n",
    "| `oob_score`   | False  | 是否使用袋外样本估计准确率 | 可设置 True 做验证        |\n",
    "| `max_samples` | None   | 每棵树采样最大样本数       | 结合 bootstrap 使用，可调 |\n",
    "\n",
    "------\n",
    "\n",
    "4️⃣ 并行与随机性\n",
    "\n",
    "| 参数           | 默认值 | 作用                       | 调参建议             |\n",
    "| -------------- | ------ | -------------------------- | -------------------- |\n",
    "| `n_jobs`       | None   | 并行训练线程数             | `-1` 使用全部 CPU    |\n",
    "| `random_state` | None   | 随机种子                   | 固定随机性，方便复现 |\n",
    "| `warm_start`   | False  | 是否在已有模型基础上增加树 | 用于增量训练         |\n",
    "\n",
    "------\n",
    "\n",
    "5️⃣ 正则化/剪枝\n",
    "\n",
    "| 参数            | 默认值 | 作用           | 调参建议         |\n",
    "| --------------- | ------ | -------------- | ---------------- |\n",
    "| `ccp_alpha`     | 0.0    | 成本复杂度剪枝 | 可用于防止过拟合 |\n",
    "| `monotonic_cst` | None   | 单调约束       | 一般不使用       |\n",
    "\n",
    "------\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "472fbacc-eab7-43f7-878a-d9b8a3214128",
   "metadata": {},
   "source": [
    "🔹 网格搜索常用参数组合\n",
    "\n",
    "```python\n",
    "param_grid = {\n",
    "    \"n_estimators\": [100, 300, 500, 800],\n",
    "    \"max_depth\": [5, 7, 10, 12],\n",
    "    \"max_features\": [\"sqrt\", \"log2\"],\n",
    "    \"min_samples_split\": [2, 5, 10],\n",
    "    \"min_samples_leaf\": [1, 2, 4],\n",
    "    \"criterion\": [\"gini\", \"entropy\"]\n",
    "}\n",
    "```\n",
    "\n",
    "> 小数据集可以先只调 `n_estimators` 和 `max_depth`，避免组合过多训练时间太长。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b0ea3faf-e4d0-46c3-9dd1-c523a9f6e730",
   "metadata": {},
   "source": [
    "## 网格搜索法GridSearchCV"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "961d5e8a-3143-4663-b592-7632d205d95f",
   "metadata": {},
   "source": [
    "class sklearn.model_selection.GridSearchCV(estimator, param_grid, *, scoring=None, n_jobs=None, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', error_score=nan, return_train_score=False)\n",
    "\n",
    "GridSearchCV是Scikit-learn中用于超参数搜索的一种方法，它允许你指定一个参数网格，并在指定的参数空间内进行穷举搜索。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "981c8d2e-8ade-4df9-8345-51d81dbca324",
   "metadata": {},
   "source": [
    "| 参数               | 说明                                                         |\n",
    "| ------------------ | ------------------------------------------------------------ |\n",
    "| estimator          | 你想要优化的模型对象。通常是一个Scikit-learn中的机器学习算法，比如LogisticRegression、RandomForestClassifier等。 |\n",
    "| param_grid         | 一个字典或字典列表，指定了要搜索的参数网格。字典的键是模型参数的名称，值是要搜索的参数值的列表。 |\n",
    "| scoring            | 模型评估指标。用于评估模型性能的指标，默认为None，即使用模型的score方法来评估性能。 |\n",
    "| n_jobs             | 并行工作数。指定在搜索过程中并行运行的作业数量。默认为None，表示不并行运行。 |\n",
    "| refit              | 是否在找到最佳参数后使用整个数据集重新拟合模型。默认为True。 |\n",
    "| cv                 | 交叉验证生成器或迭代器。用于确定交叉验证的折数和分割策略。   |\n",
    "| verbose            | 详细程度。控制输出信息的详细程度。默认为0，表示不输出额外信息。 |\n",
    "| pre_dispatch       | 预调度。用于控制在并行运行时发送的作业数量。默认为'2*n_jobs'，表示发送两倍于可用CPU核心数量的作业。 |\n",
    "| error_score        | 错误得分。当一个参数设置导致错误时，用于替代该参数设置的得分。默认为NaN，表示忽略错误。 |\n",
    "| return_train_score | 是否返回训练集的得分。默认为False，表示不返回训练集的得分。  |"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d27bff78",
   "metadata": {},
   "source": [
    "## 以Random Forest算法为例，进行超参数调优"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "f454744a-6acd-43a9-8261-bbdd20b38000",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 10 folds for each of 45 candidates, totalling 450 fits\n",
      "Best CV accuracy: 81.54 %\n",
      "Best estimator: RandomForestClassifier(max_depth=7, n_estimators=400, random_state=42)\n",
      "Best parameters (best_params_): {'max_depth': 7, 'n_estimators': 400}\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  display: none;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  overflow: visible;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".estimator-table summary {\n",
       "    padding: .5rem;\n",
       "    font-family: monospace;\n",
       "    cursor: pointer;\n",
       "}\n",
       "\n",
       ".estimator-table details[open] {\n",
       "    padding-left: 0.1rem;\n",
       "    padding-right: 0.1rem;\n",
       "    padding-bottom: 0.3rem;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table {\n",
       "    margin-left: auto !important;\n",
       "    margin-right: auto !important;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:nth-child(odd) {\n",
       "    background-color: #fff;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:nth-child(even) {\n",
       "    background-color: #f6f6f6;\n",
       "}\n",
       "\n",
       ".estimator-table .parameters-table tr:hover {\n",
       "    background-color: #e0e0e0;\n",
       "}\n",
       "\n",
       ".estimator-table table td {\n",
       "    border: 1px solid rgba(106, 105, 104, 0.232);\n",
       "}\n",
       "\n",
       ".user-set td {\n",
       "    color:rgb(255, 94, 0);\n",
       "    text-align: left;\n",
       "}\n",
       "\n",
       ".user-set td.value pre {\n",
       "    color:rgb(255, 94, 0) !important;\n",
       "    background-color: transparent !important;\n",
       "}\n",
       "\n",
       ".default td {\n",
       "    color: black;\n",
       "    text-align: left;\n",
       "}\n",
       "\n",
       ".user-set td i,\n",
       ".default td i {\n",
       "    color: black;\n",
       "}\n",
       "\n",
       ".copy-paste-icon {\n",
       "    background-image: url();\n",
       "    background-repeat: no-repeat;\n",
       "    background-size: 14px 14px;\n",
       "    background-position: 0;\n",
       "    display: inline-block;\n",
       "    width: 14px;\n",
       "    height: 14px;\n",
       "    cursor: pointer;\n",
       "}\n",
       "</style><body><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(max_depth=7, n_estimators=400, random_state=42)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>RandomForestClassifier</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.7/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\" data-param-prefix=\"\">\n",
       "        <div class=\"estimator-table\">\n",
       "            <details>\n",
       "                <summary>Parameters</summary>\n",
       "                <table class=\"parameters-table\">\n",
       "                  <tbody>\n",
       "                    \n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('n_estimators',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">n_estimators&nbsp;</td>\n",
       "            <td class=\"value\">400</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('criterion',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">criterion&nbsp;</td>\n",
       "            <td class=\"value\">&#x27;gini&#x27;</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('max_depth',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">max_depth&nbsp;</td>\n",
       "            <td class=\"value\">7</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('min_samples_split',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">min_samples_split&nbsp;</td>\n",
       "            <td class=\"value\">2</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('min_samples_leaf',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">min_samples_leaf&nbsp;</td>\n",
       "            <td class=\"value\">1</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('min_weight_fraction_leaf',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">min_weight_fraction_leaf&nbsp;</td>\n",
       "            <td class=\"value\">0.0</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('max_features',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">max_features&nbsp;</td>\n",
       "            <td class=\"value\">&#x27;sqrt&#x27;</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('max_leaf_nodes',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">max_leaf_nodes&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('min_impurity_decrease',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">min_impurity_decrease&nbsp;</td>\n",
       "            <td class=\"value\">0.0</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('bootstrap',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">bootstrap&nbsp;</td>\n",
       "            <td class=\"value\">True</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('oob_score',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">oob_score&nbsp;</td>\n",
       "            <td class=\"value\">False</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('n_jobs',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">n_jobs&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"user-set\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('random_state',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">random_state&nbsp;</td>\n",
       "            <td class=\"value\">42</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('verbose',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">verbose&nbsp;</td>\n",
       "            <td class=\"value\">0</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('warm_start',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">warm_start&nbsp;</td>\n",
       "            <td class=\"value\">False</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('class_weight',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">class_weight&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('ccp_alpha',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">ccp_alpha&nbsp;</td>\n",
       "            <td class=\"value\">0.0</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('max_samples',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">max_samples&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "\n",
       "        <tr class=\"default\">\n",
       "            <td><i class=\"copy-paste-icon\"\n",
       "                 onclick=\"copyToClipboard('monotonic_cst',\n",
       "                          this.parentElement.nextElementSibling)\"\n",
       "            ></i></td>\n",
       "            <td class=\"param\">monotonic_cst&nbsp;</td>\n",
       "            <td class=\"value\">None</td>\n",
       "        </tr>\n",
       "    \n",
       "                  </tbody>\n",
       "                </table>\n",
       "            </details>\n",
       "        </div>\n",
       "    </div></div></div></div></div><script>function copyToClipboard(text, element) {\n",
       "    // Get the parameter prefix from the closest toggleable content\n",
       "    const toggleableContent = element.closest('.sk-toggleable__content');\n",
       "    const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
       "    const fullParamName = paramPrefix ? `${paramPrefix}${text}` : text;\n",
       "\n",
       "    const originalStyle = element.style;\n",
       "    const computedStyle = window.getComputedStyle(element);\n",
       "    const originalWidth = computedStyle.width;\n",
       "    const originalHTML = element.innerHTML.replace('Copied!', '');\n",
       "\n",
       "    navigator.clipboard.writeText(fullParamName)\n",
       "        .then(() => {\n",
       "            element.style.width = originalWidth;\n",
       "            element.style.color = 'green';\n",
       "            element.innerHTML = \"Copied!\";\n",
       "\n",
       "            setTimeout(() => {\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 2000);\n",
       "        })\n",
       "        .catch(err => {\n",
       "            console.error('Failed to copy:', err);\n",
       "            element.style.color = 'red';\n",
       "            element.innerHTML = \"Failed!\";\n",
       "            setTimeout(() => {\n",
       "                element.innerHTML = originalHTML;\n",
       "                element.style = originalStyle;\n",
       "            }, 2000);\n",
       "        });\n",
       "    return false;\n",
       "}\n",
       "\n",
       "document.querySelectorAll('.fa-regular.fa-copy').forEach(function(element) {\n",
       "    const toggleableContent = element.closest('.sk-toggleable__content');\n",
       "    const paramPrefix = toggleableContent ? toggleableContent.dataset.paramPrefix : '';\n",
       "    const paramName = element.parentElement.nextElementSibling.textContent.trim();\n",
       "    const fullParamName = paramPrefix ? `${paramPrefix}${paramName}` : paramName;\n",
       "\n",
       "    element.setAttribute('title', fullParamName);\n",
       "});\n",
       "</script></body>"
      ],
      "text/plain": [
       "RandomForestClassifier(max_depth=7, n_estimators=400, random_state=42)"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.pipeline import Pipeline\n",
    "\n",
    "# 假设 X_train, y_train 已经准备好（特征工程完成）\n",
    "# 如果你想用 pipeline，也可以把标准化放进去\n",
    "\n",
    "# ---------- 参数范围 ----------\n",
    "n_estim = range(100, 1000, 100)  # 树的数量\n",
    "max_depth = range(5, 15, 2)      # 树的最大深度\n",
    "\n",
    "param_grid = {\n",
    "    \"n_estimators\": n_estim,\n",
    "    \"max_depth\": max_depth\n",
    "}\n",
    "\n",
    "# ---------- 创建模型 ----------\n",
    "rf = RandomForestClassifier(random_state=42)\n",
    "\n",
    "# ---------- GridSearchCV ----------\n",
    "grid_search = GridSearchCV(\n",
    "    estimator=rf,\n",
    "    param_grid=param_grid,\n",
    "    cv=10,\n",
    "    scoring=\"accuracy\",\n",
    "    n_jobs=4,\n",
    "    verbose=1\n",
    ")\n",
    "\n",
    "# ---------- 训练 ----------\n",
    "grid_search.fit(X_train, y_train)\n",
    "\n",
    "# ---------- 输出最佳参数 ----------\n",
    "print(\"Best CV accuracy:\", round(grid_search.best_score_*100, 2), \"%\")\n",
    "print(\"Best estimator:\", grid_search.best_estimator_)\n",
    "print(\"Best parameters (best_params_):\", grid_search.best_params_)\n",
    "\n",
    "# ---------- 用最佳参数训练最终模型 ----------\n",
    "best_params = grid_search.best_params_\n",
    "\n",
    "rfmodel = RandomForestClassifier(\n",
    "    n_estimators=best_params[\"n_estimators\"],\n",
    "    max_depth=best_params[\"max_depth\"],\n",
    "    random_state=42\n",
    ")\n",
    "\n",
    "\n",
    "rfmodel.fit(X_train, y_train)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "447b8e07",
   "metadata": {},
   "source": [
    "## 使用Random Forest算法调优后的模型进行预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "e5a9c7e9-70dc-4ef2-85b7-fdbb19bd5069",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predictions on unlabeled data: [0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 0 0\n",
      " 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 0 1\n",
      " 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0\n",
      " 0 1 1 1 0 0 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0\n",
      " 1 0 1 0 0 1 0 0 1 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 1\n",
      " 0 1 0 0 0 1 1 0 1 0 1 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 1 1 0 1 0 1 0 1 0 1\n",
      " 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0\n",
      " 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1\n",
      " 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1\n",
      " 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0\n",
      " 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 1 1 0\n",
      " 1 0 0 1 0 0 0]\n"
     ]
    }
   ],
   "source": [
    "# ===============================\n",
    "# 未标注数据预测\n",
    "# ===============================\n",
    "# 读取未标注数据\n",
    "df_unLabeled_data = pd.read_csv('DataSet/UnlabeledData.csv')\n",
    "\n",
    "# 如果有额外的预处理函数\n",
    "# df_unLabeled = preprocess_data(df_unLabeled_data)\n",
    "df_unLabeled = df_unLabeled_data.copy()  # 直接使用原数据\n",
    "\n",
    "# 特征工程（复用训练集 scaler）\n",
    "test_processed, _ = titanic_feature_engineering(df_unLabeled, onehot_pclass=False, scaler=scaler, is_train=False)\n",
    "\n",
    "# 保持训练集特征列一致\n",
    "test_processed = test_processed[selected_cols]\n",
    "\n",
    "# 方差选择（只 transform，不 fit）\n",
    "# X_test_sel = selector.transform(test_processed)\n",
    "\n",
    "# 预测\n",
    "y_pred_unlabeled = rfmodel.predict(test_processed)\n",
    "print(\"Predictions on unlabeled data:\", y_pred_unlabeled)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "ab5e8847-4417-4767-8cdb-466fdce95375",
   "metadata": {},
   "outputs": [],
   "source": [
    "submission = pd.DataFrame({\n",
    "        \"PassengerId\": df_unLabeled_data[\"PassengerId\"],\n",
    "        \"Survived\": y_pred_unlabeled})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "43f56a0b-c84c-4037-a9f3-10df74025ae0",
   "metadata": {},
   "outputs": [],
   "source": [
    "submission.to_csv('Submission.csv', index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d9cd9b91-9c46-4b55-86b8-f7a4f05aa047",
   "metadata": {},
   "source": [
    "# 模型的保存"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a422ce3a-088a-4020-9a2d-d5e1f8aeeb70",
   "metadata": {},
   "source": [
    "## 使用 pickle 模块保存模型\n",
    "pickle 是 Python 标准库中的一个模块，可以将 Python 对象序列化为二进制文件并保存到磁盘上。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "cae7e3ce-8ac1-4829-9077-bd208a239c9d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1,\n",
       "       1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0,\n",
       "       0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1,\n",
       "       0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0,\n",
       "       0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1,\n",
       "       0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1,\n",
       "       0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1,\n",
       "       0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0])"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pickle\n",
    "\n",
    "# 假设你已经训练好了一个模型，例如：\n",
    "# model = RandomForestClassifier()\n",
    "# model.fit(X_train, y_train)\n",
    "\n",
    "# 保存模型\n",
    "with open('./models/model.pkl', 'wb') as f:\n",
    "    pickle.dump(rfmodel, f)\n",
    "\n",
    "# 加载模型\n",
    "with open('./models/model.pkl', 'rb') as f:\n",
    "    loaded_model = pickle.load(f)\n",
    "\n",
    "# 使用加载的模型进行预测\n",
    "predictions = loaded_model.predict(X_test)\n",
    "\n",
    "predictions"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "631b271f-560f-401a-9f49-5385f9e3307d",
   "metadata": {},
   "source": [
    "## 使用 joblib 模块保存模型\n",
    "joblib 是专门为科学计算库（如 NumPy、Scikit-learn）设计的序列化工具，对于包含大量 numpy 数组的数据更高效。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "06b8ba8e-918e-44f3-a92f-a68a91cbf0d5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "模型已保存为 titanic_rf_model.pkl\n"
     ]
    }
   ],
   "source": [
    "import joblib\n",
    "\n",
    "# 假设已经训练好了最佳模型 rfmodel\n",
    "# rfmodel = RandomForestClassifier(...)\n",
    "# rfmodel.fit(X_train, y_train)\n",
    "\n",
    "# 保存模型\n",
    "joblib.dump(rfmodel, './models/titanic_rf_model.pkl')\n",
    "print(\"模型已保存为 titanic_rf_model.pkl\")\n",
    "\n",
    "# 加载模型\n",
    "# loaded_rf_model = joblib.load('titanic_rf_model.pkl')\n",
    "\n",
    "# 使用模型进行预测\n",
    "# predictions = loaded_rf_model.predict(test_processed)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0b540704-41b1-4024-9917-96349def9a25",
   "metadata": {},
   "source": [
    "在实际项目中，除了保存模型，还需要保存预处理器（如标准化器、编码器等）："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "ee336dad-014c-4175-95e9-e8fe2f760b4f",
   "metadata": {},
   "outputs": [],
   "source": [
    "import joblib\n",
    "\n",
    "# 保存模型和预处理器\n",
    "joblib.dump({\n",
    "    'model': rfmodel,\n",
    "    'scaler': scaler,  # StandardScaler\n",
    "    'selected_features': selected_cols  # 选择的特征列\n",
    "}, './models/titanic_model_package.pkl')\n",
    "\n",
    "# 加载模型和预处理器\n",
    "model_package = joblib.load('./models/titanic_model_package.pkl')\n",
    "loaded_model = model_package['model']\n",
    "loaded_scaler = model_package['scaler']\n",
    "loaded_features = model_package['selected_features']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8e62e413-e5d9-46f9-ba1f-b85bf854114c",
   "metadata": {},
   "source": [
    "对于 Scikit-learn 模型，推荐使用 joblib 而不是 pickle，因为它对 numpy 数组更高效  \n",
    "保存模型时最好同时保存相关的预处理器和特征信息  \n",
    "保存的模型文件可以在其他项目或部署环境中直接加载使用  "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c48584d8-bd00-4054-b51f-f863e4cf4f0c",
   "metadata": {},
   "source": [
    "## 使用ONNX格式保存模型"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "238cc79b-b5d0-4977-ba01-d00138b0d221",
   "metadata": {},
   "source": [
    "ONNX (Open Neural Network Exchange) 是一种开放的模型格式，可以用于在不同深度学习框架之间共享模型。虽然它主要用于深度学习模型，但也可以用于保存Scikit-learn模型。  \n",
    "\n",
    "ONNX格式的优势  \n",
    " - 跨平台兼容性: ONNX模型可以在多种平台和设备上运行  \n",
    " - 框架互操作性: 可以在不同机器学习框架之间迁移模型  \n",
    " - 优化: ONNX Runtime提供了多种优化选项  \n",
    " - 部署友好: 适合在生产环境中部署模型  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "aed28085-060e-4d38-aac9-d8bda577a336",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "随机森林模型已保存为 ONNX 格式\n",
      "ONNX模型预测结果示例: [1 1 0 1 0 0 1 1 0 0]\n",
      "原始模型预测结果示例: [1 1 0 1 0 0 1 1 0 0]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "import onnx\n",
    "from skl2onnx import convert_sklearn\n",
    "from skl2onnx.common.data_types import FloatTensorType\n",
    "import numpy as np\n",
    "\n",
    "# 假设已经完成了超参数调优并获得了最佳模型\n",
    "# grid_search = GridSearchCV(...)\n",
    "# grid_search.fit(X_train, y_train)\n",
    "\n",
    "# 获取最佳模型\n",
    "# best_model = grid_search.best_estimator_\n",
    "\n",
    "# 转换为ONNX格式\n",
    "initial_type = [('float_input', FloatTensorType([None, X_train.shape[1]]))]\n",
    "onnx_model = convert_sklearn(rfmodel, initial_types=initial_type)\n",
    "\n",
    "# 保存模型\n",
    "with open(\"./models/titanic_rf_onnx.onnx\", \"wb\") as f:\n",
    "    f.write(onnx_model.SerializeToString())\n",
    "\n",
    "print(\"随机森林模型已保存为 ONNX 格式\")\n",
    "\n",
    "# 加载并测试ONNX模型\n",
    "import onnxruntime as rt\n",
    "\n",
    "# 加载模型\n",
    "onnx_session = rt.InferenceSession(\"./models/titanic_rf_onnx.onnx\")\n",
    "\n",
    "# 使用模型进行预测\n",
    "input_name = onnx_session.get_inputs()[0].name\n",
    "test_data = X_test.astype(np.float32).values\n",
    "\n",
    "onnx_predictions = onnx_session.run(None, {input_name: test_data})[0]\n",
    "\n",
    "print(\"ONNX模型预测结果示例:\", onnx_predictions[:10])\n",
    "print(\"原始模型预测结果示例:\", rfmodel.predict(X_test)[:10])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "451051bd-efb6-4367-b740-9c063abf013b",
   "metadata": {},
   "source": [
    "# sklearn vs XGBoost vs LightGBM"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "efaff267-a5cb-4075-bdc7-32d971e2041b",
   "metadata": {},
   "source": [
    "好的 👍 我帮你对比下 **sklearn (以RandomForest/GBDT梯度提升决策树为代表)**、**XGBoost** 和 **LightGBM** 三类树模型算法，从原理、性能和适用场景几个角度来看：\n",
    "\n",
    "---\n",
    "\n",
    "## 基础原理\n",
    "\n",
    "| 特点   | sklearn（RandomForest / GBDT） | XGBoost                     | LightGBM                      |\n",
    "| ---- | ---------------------------- | --------------------------- | ----------------------------- |\n",
    "| 框架   | Python内置库（sklearn.ensemble）  | 独立库（C++实现，支持Python/R/Java等） | 微软开源，C++实现，支持Python/R/Java/C# |\n",
    "| 算法思想 | RF：袋装法+多数投票； GBDT：串行提升       | GBDT的高效实现（基于二阶导数优化）         | 改进版GBDT（基于直方图+高效分裂搜索）         |\n",
    "| 优化目标 | 主要是一阶梯度                      | 一阶+二阶导数                     | 一阶+二阶导数                       |\n",
    "| 特征支持 | 数值/类别需预处理                    | 数值/类别需预处理                   | 原生支持类别特征（更省内存）                |\n",
    "\n",
    "---\n",
    "\n",
    "## 训练效率 & 资源占用\n",
    "\n",
    "| 特点   | sklearn  | XGBoost          | LightGBM                  |\n",
    "| ---- | -------- | ---------------- | ------------------------- |\n",
    "| 训练速度 | 慢（无特别优化） | 中等（预排序+并行优化）     | **最快**（基于直方图+leaf-wise生长） |\n",
    "| 内存占用 | 高        | 较高               | **最优**（直方图方法减少内存占用）       |\n",
    "| 分布式  | 不支持      | 支持（dask / Spark） | 支持（多机多卡 + 更优通信）           |\n",
    "\n",
    "---\n",
    "\n",
    "## 模型精度 & 可解释性\n",
    "\n",
    "| 特点   | sklearn                  | XGBoost                       | LightGBM                      |\n",
    "| ---- | ------------------------ | ----------------------------- | ----------------------------- |\n",
    "| 精度   | 中等                       | 高                             | 高（在大规模数据集上往往优于XGBoost）        |\n",
    "| 泛化能力 | RF较强，GBDT易过拟合            | 较强（可调正则化参数）                   | 较强（leaf-wise生长更容易过拟合，小数据需正则化） |\n",
    "| 可解释性 | 支持feature\\_importances\\_ | 支持feature\\_importances\\_、SHAP | 支持feature\\_importances\\_、SHAP |\n",
    "\n",
    "---\n",
    "\n",
    "## 适用场景\n",
    "\n",
    "* **sklearn**\n",
    "\n",
    "  * 适合快速原型，数据量小/中等场景\n",
    "  * 教学、研究、简单baseline\n",
    "\n",
    "* **XGBoost**\n",
    "\n",
    "  * 业界成熟应用（Kaggle竞赛、工业界）\n",
    "  * 较大数据集，中等特征数量\n",
    "  * 当需要较强的模型解释时\n",
    "\n",
    "* **LightGBM**\n",
    "\n",
    "  * 大规模数据集（千万级别样本，超高维特征）\n",
    "  * 特别适合类别特征多的场景（无需one-hot）\n",
    "  * 更快训练，线上部署内存友好\n",
    "\n",
    "---\n",
    "\n",
    "## 总结\n",
    "\n",
    "* **数据量小 / 初学者 → sklearn**\n",
    "* **中等规模 / Kaggle竞赛 / 稳定精度 → XGBoost**\n",
    "* **大规模 / 高维稀疏 / 高速场景 → LightGBM**\n",
    "\n",
    "---\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6a296064-c415-496e-8cbe-1ebe6082a932",
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "from sklearn.model_selection import cross_val_score, cross_val_predict, KFold\n",
    "from sklearn.metrics import accuracy_score, confusion_matrix\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# XGBoost\n",
    "xgb_model = XGBClassifier(\n",
    "    n_estimators=800,\n",
    "    learning_rate=0.05,\n",
    "    max_depth=6,\n",
    "    subsample=0.8,\n",
    "    colsample_bytree=0.8,\n",
    "    random_state=1,\n",
    "    n_jobs=-1,\n",
    "    use_label_encoder=False,\n",
    "    eval_metric=\"mlogloss\"  # 避免 warning\n",
    ")\n",
    "\n",
    "xgb_model.fit(X_train, y_train)\n",
    "prediction_xgb = xgb_model.predict(X_test)\n",
    "\n",
    "print(\"--------XGBoost Classifier -------\")\n",
    "print(\"The accuracy of XGBoost Classifier is\", round(accuracy_score(y_test, prediction_xgb)*100, 2))\n",
    "\n",
    "# Cross-validation\n",
    "kfold = KFold(n_splits=10, shuffle=True, random_state=42)\n",
    "result_xgb = cross_val_score(xgb_model, X, y, cv=kfold, scoring=\"accuracy\")\n",
    "print(\"The cross validated score for XGBoost Classifier is:\", round(result_xgb.mean()*100, 2))\n",
    "\n",
    "# Confusion Matrix\n",
    "y_pred_xgb = cross_val_predict(xgb_model, X, y, cv=kfold)\n",
    "sns.heatmap(confusion_matrix(y, y_pred_xgb), annot=True, fmt=\"3.0f\", cmap=\"Accent_r\")\n",
    "plt.title(\"XGBoost Confusion Matrix\", y=1, size=15)\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6dcd2633-145d-4bed-aa94-d952e0200058",
   "metadata": {},
   "outputs": [],
   "source": [
    "from lightgbm import LGBMClassifier\n",
    "\n",
    "# LightGBM\n",
    "lgb_model = LGBMClassifier(\n",
    "    n_estimators=800,\n",
    "    learning_rate=0.05,\n",
    "    max_depth=-1,\n",
    "    num_leaves=31,\n",
    "    subsample=0.8,\n",
    "    colsample_bytree=0.8,\n",
    "    random_state=1,\n",
    "    n_jobs=-1\n",
    ")\n",
    "\n",
    "lgb_model.fit(X_train, y_train)\n",
    "prediction_lgb = lgb_model.predict(X_test)\n",
    "\n",
    "print(\"--------LightGBM Classifier -------\")\n",
    "print(\"The accuracy of LightGBM Classifier is\", round(accuracy_score(y_test, prediction_lgb)*100, 2))\n",
    "\n",
    "# Cross-validation\n",
    "result_lgb = cross_val_score(lgb_model, X, y, cv=kfold, scoring=\"accuracy\")\n",
    "print(\"The cross validated score for LightGBM Classifier is:\", round(result_lgb.mean()*100, 2))\n",
    "\n",
    "# Confusion Matrix\n",
    "y_pred_lgb = cross_val_predict(lgb_model, X, y, cv=kfold)\n",
    "sns.heatmap(confusion_matrix(y, y_pred_lgb), annot=True, fmt=\"3.0f\", cmap=\"Accent_r\")\n",
    "plt.title(\"LightGBM Confusion Matrix\", y=1, size=15)\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c321fe75-b4c9-436d-9609-c67f9ccc5590",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "hide_input": false,
  "kernelspec": {
   "display_name": "Python 3 (env_sklearn)",
   "language": "python",
   "name": "env_sklearn"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.11"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "713px",
    "left": "33px",
    "top": "234px",
    "width": "219.458px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
